三种解决方法PHP file_get_contents 函数超时的
这里就简单介绍三种:
一、增加超时的时间限制
这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。
我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改file_get_contents延时可以用resource $context的timeout参数:复制代码代码如下:
$opts = array(
‘http'=>array(
‘method'=>”GET”,
‘timeout'=>60,
)
);
$context = stream_context_create($opts);
$html =file_get_contents('http://www.zzzyk.com', false, $context);
fpassthru($fp);
二、一次有延时的话那就多试几次
有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回 FALSE,所以可以下面这样编写代码:复制代码代码如下:
$cnt=0;
while($cnt < 3 && ($str=@file_get_contents('http://www.xiaoyaxiao.com'))===FALSE) $cnt++;
PHP 简单快速的获取文件信息,可以用函数 file_get_contents(),包括网络文件信息,当然file_get_contents()也有许多不稳定的因素,先来讲获取请求返回头信息 ;
示例:
<?php
//加上@ 是为了防止file_get_contents获取失败返回至命错误,影响后面的程序运行
@file_get_contents("http://zhaoxi.net");
var_dump($http_response_header);?>
输出结果
array(9) {
[0]=>
string(15) "HTTP/1.1 200 OK" //这个很关键,通过返回状态码可以得知是否成功
[1]=>
string(35) "Date: Sat, 12 Apr 2012 17:30:38 GMT"
[2]=>
string(29) "Server: Apache/2.2.3 (CentOS)"
[3]=>
string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
[4]=>
string(27) "ETag: "280100-1b6-80bfd280""
[5]=>
string(20) "Accept-Ranges: bytes"
[6]=>
string(19) "Content-Length: 438"
[7]=>
string(17) "Connection: close"
[8]=>
string(38) "Content-Type: text/html; charset=UTF-8"
}注意:
1、file_get_contents 用于获取网络文件时,如:(file_get_contents("http://www.zhaoxi.org/")),不能频繁使用,特别是网络不稳定时,容易造成超时引起服务占资源
2、file_get_contents 获取文件大小有限制