【发布时间】:2016-10-19 21:10:25
【问题描述】:
我启动以下服务器:
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, 'localhost', 9000) or die("Failed: socket_bind()");
socket_listen($socket, 20) or die("Failed: socket_listen()");
$client = socket_accept($socket);
socket_set_option($client, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>1, 'usec'=>0));
socket_set_option($client, SOL_SOCKET, SO_SNDTIMEO, array('sec'=>1, 'usec'=>0));
while(1) {
$read = array($client);
$write = $except = null;
socket_select($read,$write,$except,1);
}
当我尝试使用 telnet localhost 9000 连接到此服务器时,它不会在一秒钟后退出,尽管我设置了 1 秒超时。
Linux 上的 PHP 7.0.11。 FreeBSD 上的 PHP 5.6.21 也有类似的问题
为什么它不起作用?
注意:在此示例中,我尝试减少超时。在我真正的问题中,我需要将它增加到几个小时或几天。
【问题讨论】: