我对PHP文档中有关使用socket_select()
。
来自http://www.php.net/socket_select:
如果您不打算在socket_select()调用之后检查其结果,则必须向任何集合添加套接字资源,并进行适当的响应。 socket_select()返回后,必须检查所有数组中的所有套接字资源。必须写入任何可用于写入的套接字资源,并且必须读取可用于读取的任何套接字资源。
我想知道这在实践中意味着什么,特别是与阅读有关。
socket_recv()
,会发生什么?插座是否会关闭?致命错误?数据丢失?socket_recv()
后,如果套接字缓冲区中仍有数据,该怎么办?在缓冲区为空之前,您是否需要进一步调用?或者相反 - 在你再次呼叫socket_recv()
之前,是否应该避免致电socket_select()
?或者这两种方式无关紧要?评论有点神秘 - 它会发出一个警告,说明某些事情是糟糕的,但并不清楚如何避免它或将产生什么影响!
答案 0 :(得分:0)
我认为这意味着输入数组中提供的套接字会锁定,直到您清除缓冲区,导致稍后与套接字的进一步交互导致问题。最好的方法是循环遍历每个数组,并在该循环中,在每个套接字上再次循环,直到套接字不再从其缓冲区返回任何内容,例如在您提供的文档页面上进一步显示