今天早些时候我注意到一些调用php fwrite失败,因为目标套接字处于混合状态.SYN_SENT中存在大量连接,并且似乎没有作为故障返回.
如果x位没有通过线路传输,那么检测此问题的最佳方法是什么,只是将连接超时?
我相信你正在寻找stream_set_timeout
。一个例子:
stream_set_timeout($fp, 2);
fwrite($fp, "GET / HTTP/1.0\r\n\r\n");
Run Code Online (Sandbox Code Playgroud)
您可以通过检查流的元数据来检查是否发生超时:
$info = stream_get_meta_data($fp);
// $info['timed_out'] == true : time-out has happened
Run Code Online (Sandbox Code Playgroud)