最近发现部分朋友在使用
file() fopen() file_get_contents() 函数试经常报错
如下:
Warning: file(http://www.****.com/****.html) [function.file]: failed to open stream: HTTP request failed! in *****.php on line x
尝试过很多方法,甚至变更了PHP运行方式,但是似乎问题没有得到改善。
高手答复:路由问题,换一个快一点的DNS即可,换了一下机器的DNS,问题并没有得到改善。
如遇到这样的问题,我的解决办法是。
修改原来的函数如
$content =file_get_contents($url);
换成
while(!$content){
@$content =file_get_contents($url);
}
这样,函数将判断是否取到内容,取不到的话,将重复执行(@的作用:过滤错误提示)。经过本人测试,如此while循环执行不超过10次(我的最多4次即可获取),即可完成file_get_contents操作。
发出来心得,大家共享一下。
[2008年1月7日补充]这里会出现一个潜在的错误:如果文件不存在的话,程序将进入死循环,因此,加入判断次数。假设只检查4次。
$i=0;
while(!$content or $i==4){
@$content =file_get_contents($url);
$i++;
}
if($i==4) exit("next");
4次之后还没取到,直接进入下一个函数吧!上面只是终止全部操作,这里的函数可以自行配置