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套接字读取返回空字符串_Php_Sockets - Fatal编程技术网

PHP套接字读取返回空字符串

PHP套接字读取返回空字符串,php,sockets,Php,Sockets,我为websocket客户端编写了一个PHP类,它允许您从PHP连接到websocket服务器。它工作得非常好,只是它只能读取无限循环中的数据。在websocket连接中,服务器或客户端可以随时发送数据,发送次数可以根据需要而定。不幸的是,如果另一个套接字发送了任何数据,socket\u select、socket\u read和socket\u recv将不会阻止-socket\u select将立即返回,socket\u read和socket\u recv将返回空字符串。我尝试让进程休眠,

我为websocket客户端编写了一个PHP类,它允许您从PHP连接到websocket服务器。它工作得非常好,只是它只能读取无限循环中的数据。在websocket连接中,服务器或客户端可以随时发送数据,发送次数可以根据需要而定。不幸的是,如果另一个套接字发送了任何数据,socket\u select、socket\u read和socket\u recv将不会阻止-socket\u select将立即返回,socket\u read和socket\u recv将返回空字符串。我尝试让进程休眠,直到它收到SIGPOLL,但这导致它无限期休眠。是否有任何方法可以在收到数据后知道套接字上有更多可用数据?

PHP不是一种很好的语言,因为它不是一种异步语言。我建议使用Node.js或类似的东西


我可能不太了解PHP和WebSocket,但是你不能把它循环,直到你击中SigPult.< /P>不是一个直接的答案,但是听起来好像你应该好好考虑一个很有意思的方法,除非你用那种方式实现它,而不是真的被激活,比如@ Corbin:SockySead如果数据在套接字上,立即返回。不管你是否已经读过。文档将其澄清为检查读取是否不会阻止,并且由于socket_read和socket_recv都不会阻止它们返回空字符串,因此会立即返回。等待SIGPOLL对我不起作用,尽管我不确定我是否正确设置了它-我使用了pcntl_sigwaitinfoarraySIGPOLL;,但我必须先阻止SIGPOLL吗?