2009-11-19 37 views
5

今天早些时候,我注意到一些调用php fwrite失败,因为目标套接字处于混合状态。有很多连接停留在SYN_SENT中,并且看起来不会成为失败。在php中检测早期失败fwrite

如果x比特没有通过线路传输,检测这种情况并简单地超时连接的最佳方法是什么?

回答

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