代码之家  ›  专栏  ›  技术社区  ›  pistacchio

php socket服务器:读取所有输入

  •  1
  • pistacchio  · 技术社区  · 14 年前

    我正在试验一个非常简单的PHP服务器。它接受一个连接,读取发送的内容,写入并退出(我从CLI运行它)。 代码如下。问题是,只要数据的长度超过1024,它就不会截取数据的结尾,所以它只是挂起。有什么帮助吗?谢谢

    $out= '';
    while ($out = socket_read($client, 1024))
    {
     echo $out; 
    }
    
    echo "ok";
    
    socket_close($client);
    socket_close($sock);
    

    ?gt;

    2 回复  |  直到 10 年前
        1
  •  4
  •   Svisstack    14 年前

    因为你的最后一个 socket_read 会一直等待其他数据,为什么?

    因为你的时候永远不会结束。 插座读取 函数返回数据,如果不返回 插座读取 将等待生成新数据。

    使用 socket_select 函数在调用前检查数据是否存在 插座读取 然后你就可以保护自己不被挂起,在这一刻你就可以结束了。

        2
  •  0
  •   fazel fouladi    10 年前

    例子。。。 在调用socket_read之前,使用socket_select函数检查数据是否存在,这样您就可以避免函数挂起,此时您可以结束。

    拜托。。。

    推荐文章