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);

?>