php:wird socket\u set\u nonblock()和socket\u connect()
我想我使用socket\u set\u nonblock()可能有问题。如果没有socket\u set\u nonblock(),socket\u select()可以工作,但是如果使用socket\u set\u nonblock(),socket\u select()会失败。我写的代码如下 案例1。失败php:wird socket\u set\u nonblock()和socket\u connect(),php,Php,我想我使用socket\u set\u nonblock()可能有问题。如果没有socket\u set\u nonblock(),socket\u select()可以工作,但是如果使用socket\u set\u nonblock(),socket\u select()会失败。我写的代码如下 案例1。失败 $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); echo socket_strerror(socket_last_error()
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
echo socket_strerror(socket_last_error()); /* 'success' */
socket_set_nonblock($sock);
echo socket_strerror(socket_last_error()); /* 'success' */
socket_connect($sock, ADDRESS, PORT);
echo socket_strerror(socket_last_error()); /* 'unable to connect [115]: Operation now in progress' */
$read = array($sock); $write = array($sock);
socket_select($read, $write, $e=NULL, TIMEOUT);
echo socket_strerror(socket_last_error()); /* 'unable to connect [115]: Operation now in progress' */
案例2。成功
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
echo socket_strerror(socket_last_error()); /* 'success' */
socket_connect($sock, ADDRESS, PORT);
echo socket_strerror(socket_last_error()); /* 'success' */
$read = array($sock); $write = array($sock);
socket_select($read, $write, $e=NULL, TIMEOUT);
echo socket_strerror(socket_last_error()); /* 'success' */
“echo”之后的注释是“echo”的输出。我猜不出问题出在哪里。此外,它发生在我运行的唯一一台服务器上。其他的都很好。服务器的环境完全相同。(相同的os/apache/php版本和模块)