Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP stream_select alwasy随服务器套接字返回_Php_Sockets_Stream - Fatal编程技术网

PHP stream_select alwasy随服务器套接字返回

PHP stream_select alwasy随服务器套接字返回,php,sockets,stream,Php,Sockets,Stream,在包含使用stream\u socket\u server()创建的服务器套接字以及客户端套接字的阵列上使用stream\u select()时,它总是在选择服务器套接字后立即返回 我对stream\u select()的理解是,它只应在服务器套接字状态发生更改(或达到超时)时返回。只有在新客户端尝试连接或一个客户端已发送数据时,才会发生这种情况 我编写了以下代码: 这样,我就得到了一个不间断运行的循环,$r每次都包含服务器套接字,但是stream\u socket\u accept()会抛出

在包含使用
stream\u socket\u server()
创建的服务器套接字以及客户端套接字的阵列上使用
stream\u select()
时,它总是在选择服务器套接字后立即返回

我对
stream\u select()
的理解是,它只应在服务器套接字状态发生更改(或达到超时)时返回。只有在新客户端尝试连接或一个客户端已发送数据时,才会发生这种情况

我编写了以下代码:

这样,我就得到了一个不间断运行的循环,
$r
每次都包含服务器套接字,但是
stream\u socket\u accept()
会抛出一个错误,因为没有客户端尝试连接


我做错了什么?或者我对
stream\u select()
的理解有误吗?

在您发布的代码中,您使用的是
socket\u select
而不是
stream\u select
谢谢,@t.m.adam,但仍然是相同的行为。
$socket = stream_socket_server("tcp://localhost:8888");
$connections['master'] = $socket;

while(true) {
    $w = $e = null;
    $r = $connections;
    if (stream_select($r, $w, $e, 1) !== false) {
        foreach ($r as $socket) {
            if ($socket === $connections['master']) {
                $conn = stream_socket_accept($socket);
                $connections[] = $conn;
            } else {
                // Handle communication with client...
            }
        }
    }
}