鏈接socket分爲鏈接超時和讀取超時socket
for($i=0;$i<1000;$i++){ $sock=stream_socket_client("www.baidu.com:80", $errno,$errstr,2); stream_set_timeout($sock,5); $meta=stream_get_meta_data($sock); var_dump("start",$meta); fwrite($sock, "GET / HTTP/1.0\r\n\r\n"); $buf = ''; while (true) { $s = fread($sock,1024); if (!isset($s[0])) { break; } $buf .= $s; } $meta=stream_get_meta_data($sock); var_dump("end",$meta,$sock); }
string(5) "start" array(7) { ["stream_type"]=> string(14) "tcp_socket/ssl" ["mode"]=> string(2) "r+" ["unread_bytes"]=> int(0) ["seekable"]=> bool(false) ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) } string(3) "end" array(7) { ["stream_type"]=> string(14) "tcp_socket/ssl" ["mode"]=> string(2) "r+" ["unread_bytes"]=> int(0) ["seekable"]=> bool(false) ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(true) } resource(175) of type (stream)
其中的timed_out就是讀取數據的超時,false爲讀取沒超時tcp
eof爲是否已經到了文件尾,若是是長鏈接這裏是不會到達文件尾的,http協議這種短鏈接會讀完後鏈接就結束了測試