时间:2010-07-26 08:52:29

标签: php stream asynchronous connect

3 个答案:

答案 0 :(得分:1)

我遇到了与上述问题相同的问题。我找到了一些解决方法:

我将每个'stream'包装在Stream类中并设置超时属性。在我调用connect之前,我会生成一个应该发生超时的时间戳。然后我在Manager类中有一个循环,调用stream_select()

成功的连接放在$write数组中。我在调用$stream->checkTimeout()的循环底部有另一个调用。其中有stream_select()次调用,tv_sectv_usec设置为0。如果$ this-> conn没有出现在$write中,我认为它已超时。

答案 1 :(得分:0)

答案 2 :(得分:0)

我也遇到了这个问题。我找到的解决方案是使用stream_socket_get_name。如果你想要这一切都包含在一个漂亮的图书馆结账http://drupal.org/project/httprl。它仍然需要drupal,但主要用于设置&错误处理;你可以稍微修改一下代码,它应该自己运行。