PHP.mk документација

socket_shutdown

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.socket-shutdown.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.socket-shutdown.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
socket_shutdown

Референца за `function.socket-shutdown.php` со подобрена типографија и навигација.

function.socket-shutdown.php

socket_shutdown

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_shutdownГо исклучува сокетот за примање, испраќање или и двете

= NULL

socket_shutdown(Сокет $socket, int $mode = 2): bool

На socket_shutdown() функцијата ви овозможува да престанете со дојдовни, излезни или сите податоци (стандардно) да се испраќаат преку socket

Забелешка:

Поврзаниот бафер, или бафери, може, но не мора да бидат испразнети.

Параметри

socket

А Сокет инстанца креирана со socket_create().

mode

Вредноста на mode може да биде една од следниве:

можни вредности за mode
0 Исклучи читање на сокетот
1 Исклучи пишување на сокетот
2 Исклучи читање и пишување на сокетот

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.

Дневник на промени

Верзија = NULL
8.0.0 socket е Сокет Врати ресурс или resource.

Белешки од корисници 5 белешки

Анонимен
3 години пред
Shutting down is a formality two peers can do before closing their connections. It's not required, but it can help assert your I/O procedures, so it's useful.

If writing is shut down, trying to send will result in a pipe error, and the remote peer will read an empty string after receiving all other pending data.

If reading is shut down, trying to receive will return an empty string, and the remote peer will get a pipe error if they try to send.

Writing should be shut down first between two peers. Remaining data should then be read and handled. If anything is sent at this point it should be a "goodbye" (nothing that requires the remote peer to write back to you). Finally, reading can be shut down.

Selection on a shut down channel will always succeed. Similarly, the remote peer will always succeed at selecting the opposite channel.
ludvig dot ericson на gmail dot com
20 години пред
Sockets should be first shutdown and then closed.
<?php
// Sample: Closing sockets gracefully
socket_shutdown($sock, 2);
socket_close($sock);
?>
richard dot thomas at psysolutions dot com
20 години пред
That is not a good example of a graceful shutdown. One should close the sending side of the socket and continue to read until the remote end closes its sending connection.
renmengyang567 na gmail dot com
пред 6 години
<explain>
In this case, the TCP client is gracefully disconnected from the server

<?php

define('BUF_SIZE',10);

// create for tcp
$sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_bind($sock, '127.0.0.1',5200);
socket_listen($sock,1024);
$fp = fopen('./socket_shutdown.php','rb');
$clnt_sock = socket_accept($sock);

while(!feof($fp)) {
   $str = fread($fp,BUF_SIZE);
   socket_write($clnt_sock,$str,BUF_SIZE);
} 

$eof = "\n";
socket_write($clnt_sock,$eof,strlen($eof));

//disconnect output stream(断开输入流)
socket_shutdown($clnt_sock,1);
$ret = socket_read($clnt_sock, 100);
printf("Message from client:%s\n",$ret);
socket_close($clnt_sock);
socket_close($sock);
?>

<?php
// for tcp-client 
$clnt_sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_connect($clnt_sock, '127.0.0.1', 5200);
while (($cnt= @socket_read($clnt_sock, 10,PHP_NORMAL_READ)) !==false) {
   file_put_contents('./receive.data',$cnt,FILE_APPEND);
}
print "receive file data".PHP_EOL;
socket_write($clnt_sock, "Tank you");
socket_close($clnt_sock);
?>
recycling dot sp dot am at gmail dot com
пред 15 години
Shutdown and SOL_TCP:
<?php
$a= socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_shutdown($a, 2)
?>
PHP Warning:  socket_shutdown(): unable to shutdown socket [107]: Transport endpoint is not connected 

Shutdown and SOL_UDP:
<?php
$a= socket_create(AF_INET, SOCK_STREAM, SOL_UDP);
socket_shutdown($a, 2)
?>
PHP Warning:  socket_shutdown(): unable to shutdown socket [107]: Transport endpoint is not connected 

Conclusion: if you are not actually connected, shutdown will fails with socket_error = 107, Transport endpoint is not connected. This is true for both TPC and UDP connection (which is suprising, UDP being a connectionless protocol). This is true no matter the value set for the how parameter.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.