简评file_get_contents与curl 效率及稳定性
做过好多抓取别家网站内容的产品,习惯了使用方便快捷的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函数,不但稳定速度快,还能假冒浏览器欺骗目标地址哦!
简评file_get_contents与curl 效率及稳定性相关推荐
- php file_get_contents 效率,php 浅析file_get_contents、curl 的效率和稳定性
感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 做过好多抓取别家网站内容的产品,习惯了使用方便快捷的file_get_contents函数,但是总是会遇到获取失败的问题,尽管按照手册中的 ...
- PHP抓取网页指定内容(推荐用CURL效率更高)
PHP抓取某页面指定内容 初学php研究了好几个小时最后问了同事,得以解决:下面我就以我网站的一个详情页为例子,给大家分享一下: 直接贴代码,注释写的很清楚了 [方法一] <?php //添加编 ...
- php中使用Curl、socket、file_get_contents三种方法POST提交数据
抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求 ...
- curl和file_get_contents 区别以及各自的优劣
PHP中fopen,file_get_contents,curl函数的区别: 1.fopen /file_get_contents 每次请求都会重新做DNS查询,并不对 DNS信息进行缓存.但是CUR ...
- curl的速度为什么比file_get_contents快以及具体原因
一.背景 大家做项目的时候,不免会看到前辈的代码.博主最近看到前辈有的时候请求外部接口用的是file_get_contents,有的用的是curl.稍微了解这两部分的同学都知道,curl在性能上和速度 ...
- 阿里集团搜索和推荐关于效率稳定性的思考和实践
https://yq.aliyun.com/articles/465262?spm=a2c4e.11157919.spm-bestcontent.4.146c27aejU0iKh 背景 效率和稳定性是 ...
- 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. ...
- 阿里搜索和推荐关于效率稳定性的思考和实践
云栖君导读:本文分享了阿里集团从业务效率.资源效率.稳定性三方面来打造了TPP.Tisplus.OpenSearch三大搜索和推荐平台,通过调度系统.管控.高可用分布式服务框架.多机房容灾等手段,实现 ...
- php file抓取不到内容,深入file_get_contents函数抓取内容失败的原因分析
用file_get_contents来抓取页面内容不成功,可能是因为有些主机服务商把php的allow_url_fopen选项是关闭了,就是没法直接使用file_get_contents来获取远程we ...
最新文章
- vue右键自定义菜单_一款小巧的开源右键菜单管理软件
- 使用lisp函数控制cursor
- 模块-基本概念和import导入复习
- Hexo搭建git博客
- opengles 3.0游戏开发_开发者们,快来测试Android Q啦!
- 2021-0413梦笔记
- 重庆c语言程序二级考试,优·历届重庆市计算机C语言二级考试试题及答案.doc
- EJB-02:EJB开发流程
- 三种近距离通信技术(WIFI、蓝牙、NFC)简述
- 拜水野三坡 求得一身财气
- 鼠标自动点击器及源码
- p4交换机模拟器bmv2的一些教程
- 国密算法SM2证书制作
- 数据库系统概论 实验报告答案 实验二:创建及管理数据表
- 计算机基础文化的读书报告,计算机导论读书报告样稿.doc
- docker搭建蚂蚁笔记
- 匹配移动,联通,电信手机号码正则表达式
- excel教学 java_Java怎样处理EXCEL的读取
- LaTex表格文本竖排的简单方法
- 软件测试——计算器加减乘除
热门文章
- Spring Boot整合 Sentry 监控项目日志
- SpringBoot中使用ShardingJdbc切分数据库表
- 小学数学开灯问题_包含数学暑假答案的一年级数学假期作业题
- scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
- Expected more than 1 value per channel when training, got input size torch.Size
- The NVIDIA driver on your system is too old
- openvino人脸
- pybind 编码h264
- python 美颜人脸
- math range error