PHP:socket_accept()在收到第一个字符串消息后停止工作

时间:2013-10-02 14:50:17

标签: php sockets

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

第一个客户端向服务器提交消息后出现问题

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

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

var_dump表示该参数是类型(Socket)的资源(14)。

已连接的客户端可以继续使用“服务器”脚本,因为没有任何事情发生并保持连接。只有新客户端无法连接,端口似乎关闭(没有telnet和netcat请求可能 - 连接被拒绝)

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

1 个答案:

答案 0 :(得分:0)

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

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