【发布时间】:2009-11-19 11:39:45
【问题描述】:
今天早些时候,我注意到一些对 php fwrite 的调用失败,因为目标套接字处于混合状态。有许多连接卡在 SYN_SENT 中,并且似乎不会以失败的形式返回。
如果 x 位没有通过网络传输位,那么检测这一点并简单地使连接超时的最佳方法是什么?
【问题讨论】:
今天早些时候,我注意到一些对 php fwrite 的调用失败,因为目标套接字处于混合状态。有许多连接卡在 SYN_SENT 中,并且似乎不会以失败的形式返回。
如果 x 位没有通过网络传输位,那么检测这一点并简单地使连接超时的最佳方法是什么?
【问题讨论】:
我相信您正在寻找stream_set_timeout。一个例子:
stream_set_timeout($fp, 2);
fwrite($fp, "GET / HTTP/1.0\r\n\r\n");
您可以通过检查流的元数据来检查是否发生超时:
$info = stream_get_meta_data($fp);
// $info['timed_out'] == true : time-out has happened
【讨论】: