做过好多抓取别家网站内容的产品,习惯了使用方便快捷的file_get_contents函数,但是总是会遇到获取失败的问题,尽管按照手册中的例子设置了超时,可多数时候不会奏效:

$config['context'] = stream_context_create(array(‘http’ => array(‘method’ => “GET”,
   ’timeout’ => 5//这个超时时间不稳定,经常不奏效
   )
  ));

这时候,看一下服务器的连接池,会发现一堆类似的错误,让你头疼万分:

file_get_contents(http://*** ): failed to open stream…

不得已,安装了curl库,写了一个函数替换:

function curl_file_get_contents($durl){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $durl);curl_setopt($ch, CURLOPT_TIMEOUT, 5);curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);curl_setopt($ch, CURLOPT_REFERER,_REFERER_);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$r = curl_exec($ch);curl_close($ch);return $r;}

如此,除了真正的网络问题外,没再出现任何问题。

这是别人做过的关于curl和file_get_contents的测试:

file_get_contents抓取google.com需用秒数:

2.31319094
2.30374217
2.21512604
3.30553889
2.30124092

curl使用的时间:

0.68719101
0.64675593
0.64326
0.81983113
0.63956594

差距很大吧?呵呵,从我使用的经验来说,这两个工具不只是速度有差异,稳定性也相差很大。建议对网络数据抓取稳定性要求比较高的朋友使用上面的curl_file_get_contents函数,不但稳定速度快,还能假冒浏览器欺骗目标地址哦!

转载来之:http://www.71j.cn/archives/140

简评file_get_contents与curl 效率及稳定性相关推荐

  1. php file_get_contents 效率,php 浅析file_get_contents、curl 的效率和稳定性

    感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 做过好多抓取别家网站内容的产品,习惯了使用方便快捷的file_get_contents函数,但是总是会遇到获取失败的问题,尽管按照手册中的 ...

  2. PHP抓取网页指定内容(推荐用CURL效率更高)

    PHP抓取某页面指定内容 初学php研究了好几个小时最后问了同事,得以解决:下面我就以我网站的一个详情页为例子,给大家分享一下: 直接贴代码,注释写的很清楚了 [方法一] <?php //添加编 ...

  3. php中使用Curl、socket、file_get_contents三种方法POST提交数据

    抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求 ...

  4. curl和file_get_contents 区别以及各自的优劣

    PHP中fopen,file_get_contents,curl函数的区别: 1.fopen /file_get_contents 每次请求都会重新做DNS查询,并不对 DNS信息进行缓存.但是CUR ...

  5. curl的速度为什么比file_get_contents快以及具体原因

    一.背景 大家做项目的时候,不免会看到前辈的代码.博主最近看到前辈有的时候请求外部接口用的是file_get_contents,有的用的是curl.稍微了解这两部分的同学都知道,curl在性能上和速度 ...

  6. 阿里集团搜索和推荐关于效率稳定性的思考和实践

    https://yq.aliyun.com/articles/465262?spm=a2c4e.11157919.spm-bestcontent.4.146c27aejU0iKh 背景 效率和稳定性是 ...

  7. php curl 400 bad request怎么解决,关于json:file_get_contents抛出400 Bad Request错误PHP

    我只是使用file_get_contents()来获取来自这样的用户的最新推文: $tweet = json_decode(file_get_contents('http://api.twitter. ...

  8. 阿里搜索和推荐关于效率稳定性的思考和实践

    云栖君导读:本文分享了阿里集团从业务效率.资源效率.稳定性三方面来打造了TPP.Tisplus.OpenSearch三大搜索和推荐平台,通过调度系统.管控.高可用分布式服务框架.多机房容灾等手段,实现 ...

  9. php file抓取不到内容,深入file_get_contents函数抓取内容失败的原因分析

    用file_get_contents来抓取页面内容不成功,可能是因为有些主机服务商把php的allow_url_fopen选项是关闭了,就是没法直接使用file_get_contents来获取远程we ...

最新文章

  1. vue右键自定义菜单_一款小巧的开源右键菜单管理软件
  2. 使用lisp函数控制cursor
  3. 模块-基本概念和import导入复习
  4. Hexo搭建git博客
  5. opengles 3.0游戏开发_开发者们,快来测试Android Q啦!
  6. 2021-0413梦笔记
  7. 重庆c语言程序二级考试,优·历届重庆市计算机C语言二级考试试题及答案.doc
  8. EJB-02:EJB开发流程
  9. 三种近距离通信技术(WIFI、蓝牙、NFC)简述
  10. 拜水野三坡 求得一身财气
  11. 鼠标自动点击器及源码
  12. p4交换机模拟器bmv2的一些教程
  13. 国密算法SM2证书制作
  14. 数据库系统概论 实验报告答案 实验二:创建及管理数据表
  15. 计算机基础文化的读书报告,计算机导论读书报告样稿.doc
  16. docker搭建蚂蚁笔记
  17. 匹配移动,联通,电信手机号码正则表达式
  18. excel教学 java_Java怎样处理EXCEL的读取
  19. LaTex表格文本竖排的简单方法
  20. 软件测试——计算器加减乘除

热门文章

  1. Spring Boot整合 Sentry 监控项目日志
  2. SpringBoot中使用ShardingJdbc切分数据库表
  3. 小学数学开灯问题_包含数学暑假答案的一年级数学假期作业题
  4. scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
  5. Expected more than 1 value per channel when training, got input size torch.Size
  6. The NVIDIA driver on your system is too old
  7. openvino人脸
  8. pybind 编码h264
  9. python 美颜人脸
  10. math range error