答案 0 :(得分:1)
我遇到了与上述问题相同的问题。我找到了一些解决方法:
我将每个'stream'包装在Stream
类中并设置超时属性。在我调用connect之前,我会生成一个应该发生超时的时间戳。然后我在Manager
类中有一个循环,调用stream_select()
。
成功的连接放在$write
数组中。我在调用$stream->checkTimeout()
的循环底部有另一个调用。其中有stream_select()
次调用,tv_sec
和tv_usec
设置为0。如果$ this-> conn没有出现在$write
中,我认为它已超时。
答案 1 :(得分:0)
答案 2 :(得分:0)
我也遇到了这个问题。我找到的解决方案是使用stream_socket_get_name。如果你想要这一切都包含在一个漂亮的图书馆结账http://drupal.org/project/httprl。它仍然需要drupal,但主要用于设置&错误处理;你可以稍微修改一下代码,它应该自己运行。