php:wird socket\u set\u nonblock()和socket\u connect()

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()

我想我使用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()); /* '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版本和模块)