» 网友学堂 » PHP教程 » file() fopen() file_get_contents() 函数丢包(无法获取远程URL内容)问题
file() fopen() file_get_contents() 函数丢包(无法获取远程URL内容)问题
作者:问天 发表时间:2007-12-5 14:36 阅读:1401次 在百度搜索相关内容

最近发现部分朋友在使用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次之后还没取到,直接进入下一个函数吧!上面只是终止全部操作,这里的函数可以自行配置

#Advertisement