downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

socket_strerror> <socket_set_option
[edit] Last updated: Fri, 17 May 2013

view this page in

socket_shutdown

(PHP 4 >= 4.1.0, PHP 5)

socket_shutdown受信、送信、または送受信用のソケットをシャットダウンする

説明

bool socket_shutdown ( resource $socket [, int $how = 2 ] )

socket_shutdown() 関数は、socket から送られてくる受信、送信あるいはすべて(デフォルト)のデータを停止します。

パラメータ

socket

socket_create() で作成したソケットリソース。

how

how の値は以下のうちのひとつです。

how のとりうる値
0 ソケットの読み込みを停止します。
1 ソケットの書き込みを停止します。
2 ソケットの読み込み・書き込みを停止します。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。



socket_strerror> <socket_set_option
[edit] Last updated: Fri, 17 May 2013
 
add a note add a note User Contributed Notes socket_shutdown - [4 notes]
up
1
recycling dot sp dot am at gmail dot com
2 years ago
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.
up
1
richard dot thomas at psysolutions dot com
7 years ago
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.
up
0
korvin at biz dot by
4 years ago
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
?>
up
0
ludvig dot ericson at gmail dot com
7 years ago
Sockets should be first shutdown and then closed.
<?php
// Sample: Closing sockets gracefully
socket_shutdown($sock, 2);
socket_close($sock);
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites