socket_shutdown

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

socket_shutdownShuts down a socket for receiving, sending, or both

说明

bool socket_shutdown ( resource $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

Note:

The associated buffer, or buffers, may or may not be emptied.

参数

socket

A valid socket resource created with socket_create().

how

The value of how can be one of the following:

possible values for how
0 Shutdown socket reading
1 Shutdown socket writing
2 Shutdown socket reading and writing

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

User Contributed Notes

recycling dot sp dot am at gmail dot com 16-Sep-2010 06:09
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.
richard dot thomas at psysolutions dot com 23-Nov-2005 07: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.
ludvig dot ericson at gmail dot com 02-Sep-2005 10:13
Sockets should be first shutdown and then closed.
<?php
// Sample: Closing sockets gracefully
socket_shutdown($sock, 2);
socket_close($sock);
?>