设置了timeout 没有用,有时候会等很长时间,不知道是什么原因,google了一下,挺多人遇到这个问题,但没有找到解决方法。
//...
$fp = @fsockopen($ip, 80, $errno, $errstr, 2);//2s timeout
if (!$fp) {
echo "$errstr ($errno)<br>";
} else {
set_socket_blocking($fp, 0);
$out = "GET / HTTP/1.1\r\n";
$out .= "Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";
$out .= "Accept-Language: zh-cn\r\n";
$out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)\r\n";
$out .= "Accept-Encoding: gzip, deflate\r\n";
$out .= "Host: ".$domain."\r\n";
$out .= "Connection: Keep-Alive\r\n";
$out .="\r\n";
fputs($fp, $out);
stream_set_timeout($fp, 2);
while (!feof($fp)){
$content.=fgets($fp, 1024);
}
fclose($fp);
}