file() fopen() file_get_contents() 函数丢包(无法获取远程URL内容)的解决办法

LAMP15年前 (2010)发布 liyugang
163 0

最近使用PHPfile_get_contents() 函数进行采集远程数据的时候,发现老丢包,100篇文章要少那么几篇,对我们这些追求完美的人来说是不可能的。

经常出现如下错误: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);
 

修改如:$i=0;
while(!$content or $i==4){
  $content = @file_get_contents($url);
  $i++;
}
 

这样,函数将判断是否取到内容,取不到的话,将重复执行(@的作用:过滤错误提示)。经过本人测试,如此while循环执行不超过10次(我的最多4次即可获取),即可完成file_get_contents操作。
 

© 版权声明

相关文章

暂无评论

暂无评论...