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...
}
}
}
}