(PHP 4 >= 4.1.0, PHP 5)
socket_shutdown — Shuts down a socket for receiving, sending, or both
$socket
[, int $how
= 2
] )
The socket_shutdown() function allows you to stop
incoming, outgoing or all data (the default) from being sent through the
socket
socket
A valid socket resource created with socket_create().
how
The value of how
can be one of the following:
0 | Shutdown socket reading |
1 | Shutdown socket writing |
2 | Shutdown socket reading and writing |
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
recycling dot sp dot am at gmail dot com (2010-09-16 09:09:06)
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.
korvin at biz dot by (2009-05-21 02:12:27)
Closing socket graceful
<?php
socket_shutdown($resHandle, 1);//remote host yet can read
usleep(500);//wait remote host
socket_shutdown($resHandle, 0);//close reading
socket_close($resHandle);//finaly we can free resource
?>
richard dot thomas at psysolutions dot com (2005-11-23 10:20:35)
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.
ludvig dot ericson at gmail dot com (2005-09-02 13:13:29)
Sockets should be first shutdown and then closed.
<?php
// Sample: Closing sockets gracefully
socket_shutdown($sock, 2);
socket_close($sock);
?>