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

最近使用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操作。
 

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像-李玉刚的博客
欢迎您留下宝贵的见解!
提交
头像-李玉刚的博客

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容