关于套接字:PHP:socket_accept()在收到第一条字符串消息后停止工作

PHP: socket_accept() stops working after it received the first string message

我使用socket_accept(socket)创建了一个具有10个可能客户端的套接字服务器。
现在最多可以连接10次。

在第一个客户端向服务器提交消息后,该问题就会出现

1
$data = @socket_read($clients[$i]['socket'], 1024, PHP_NORMAL_READ);

然后,脚本尝试通过socket_accept和socket_read再次侦听客户端和消息,但是所有socket_accept-requests均失败,并显示错误字符串" Invalid arguments"。

不过,var_dump指示该参数是类型(Socket)的resource(14)。

已连接的客户端可以在没有任何反应的情况下继续使用"服务器"脚本,并保持连接状态。 只有新的客户端无法连接,并且端口似乎已关闭(无法进行telnet和netcat请求-连接被拒绝)

任何想法都会有所帮助。 谢谢!


发现我假定当调用套接字处理程序类的析构函数时断开所有套接字的连接-一旦子进程关闭,它将终止所有连接。

从析构函数中删除socket_shutdown()和socket_close()解决了该问题。