curl有curlopt_connecttimeout可设,fsockopen有$timeout可设,而file_get_contents和fopen在打开url时,都不可设置响应时间timeout。如果url长时间没有响应,file_get_contents 会跳过短时间内没有响应的,而fopen会一直停留着等待,那么您的服务器就很可能挂了。
file_get_contents设置timeout的两种方法:
第一种方法:
$url='"http://www.zzsky.cn';
$timeout=10;//等待10秒
$old_timeout=ini_get('default_socket_timeout');
ini_set('default_socket_timeout',$timeout);
$contents=file_get_contents($url);
ini_set('default_socket_timeout',$old_timeout);
?>
第二种方法:
$url='"http://www.zzsky.cn';
$ctx=stream_context_create(array(
'http'=>array(
'timeout'=>10//等待10秒
)
)
);
return file_get_contents($url,0,$ctx);
?>