今天早些时候我注意到一些调用php fwrite失败,因为目标套接字处于混合状态。 SYN_SENT中存在大量连接,并且似乎没有作为故障返回。
如果x位没有通过线路传输,那么检测此问题的最佳方法是什么?如果x位没有通过线传输,则只需将连接超时?
答案 0 :(得分:2)
我相信你正在寻找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