php中filegetcontents与curl性能分析_第1页
php中filegetcontents与curl性能分析_第2页
php中filegetcontents与curl性能分析_第3页
php中filegetcontents与curl性能分析_第4页
php中filegetcontents与curl性能分析_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、php中filegetcontents与curl性能分析PHP,是英文超文本预处理语言HypertextPreprocessor的缩写。下面带大家学习一下php中file_get_contents与curl性能分析,欢迎阅读,更多详情请关注。在php中如果不仔细的去分析性能会发现file_get_contents与curl两个同很多共同点的,他们都可以采集文件打开文件,但是如果仔细一对比会发现很多不同点,下面我们一起来看看file_get_contents与curl区别。PHP中fopen,file_get_contents,curl函数的区别:1 .fopen/file_get_conten

2、ts每次请求都会重新做DN超询,并不对DNS言息进行缓存。但是CUR总自动对DNS言息进行缓存。对同一域名下的网页或者图片的请求只需要一次DN超询。这大大减少了DN逊询的次数。所以CURL勺性能比fopen/file_get_contents好很多。2 .fopen/file_get_contents在请求时,使用的是_fopen_wrapper,不会keeplive。而curl却可以。这样在多次请求多个链接时,curl效率会好一些。3 .fopen/file_get_contents函数会受到php.ini文件中allow_url_open选项配置的影响。如果该配置关闭了,则该函数也就失效了

3、。而curl不受该配置的影响。4 .curl可以模拟多种请求,例如:POS改据,表单提交等,用户可以按照自己的需求来定制请求。而fopen/file_get_contents只能使用get方式获取数据。file_get_contents获取远程文件时会把结果都存在一个字符串中fiels函数则会储存成数组形式因此,我还是比较倾向于使用curl来访问远程url°Php有curl模块扩展,功能很是强大。说了半天大家可能说性能怎么没对比呢,那我们就来看看最近需要获取别人网站上的音乐数据。用了file_get_contents函数,但是总是会遇到获取失败的问题,尽管按照手册中的例子设置了超时,

4、可多数时候不会奏效:代码如下:$config'context'=stream_context_create(array(''=>array('method'=>"GET",'timeout'=>5/这个超时时间不稳定,经常不奏效);这时候,看一下服务器的连接池,会发现一堆类似的错误,让我头疼万分:file_get_contents(*):failedtoopenstream现在改用了curl库,写了一个函数替换:代码如下:functioncurl_file_get_contents($durl

5、)$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和f

6、ile_get_contents的测试:file_get_contents抓取google.需用秒数:2.313190942.303742172.215126043.305538892.30124092curl使用的时间:0.687191010.646755930.643260.819831130.63956594差距很大?呵呵,从我使用的经验来说,这两个工具不只是速度有差异,稳定性也相差很大。建议对网络数据抓取稳定性要求比较高的朋友使用上面的curl_file_get_contents函数,不但稳定速度快,还能假冒浏览器欺骗目标地址哦再看一个实例后续贴出了curl和file_get_cont

7、ents的对比结果,这边除了curl与file_get_contents的性能对比,还包含了他们的性能对比,讲之前看下如下的结果图:curl与file_get_contents性能又t比PHPW代码如下:代码如下:<?php/*通过淘宝IP接口获取IP地理位置*paramstring$ip*return:string*/functiongetCityCurl($ip)$url="ip.taobao./service/getIpInfo.php?ip=".$ip;$ch=curl_init();$timeout=5;curl_setopt($ch,CURLOPT_URL

8、,$url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$file_contents=curl_exec($ch);curl_close($ch);$ipinfo=json_decode($file_contents);if($ipinfo->code='1')returnfalse;$city=$ipinfo->data->region.$ipinfo->data->city;return$city;func

9、tiongetCity($ip)$url="ip.taobao./service/getIpInfo.php?ip=".$ip;$ipinfo=json_decode(file_get_contents($url);if($ipinfo->code='1')returnfalse;$city=$ipinfo->data->region.$ipinfo->data->city;return$city;/forfile_get_contents$startTime=explode('',microtime();$st

10、artTime=$startTime0+$startTime1;for($i=1;$i<=10;$i+)echogetCity("121.207.247.202").""$endTime=explode('',microtime();$endTime=$endTime0+$endTime1;$totalTime=$endTime-$startTime;echo'file_get_contents:'.number_format($totalTime,10,'.',"")."

11、;seconds"/forcurl$startTime2=explode('',microtime();$startTime2=$startTime20+$startTime21;for($i=1;$i<=10;$i+)echogetCityCurl('121.207.247.202').""$endTime2=explode('',microtime();$endTime2=$endTime20+$endTime21;$totalTime2=$endTime2-$startTime2;echo"curl:".number_format($totalTime2,10,'.',"")."seconds"?>测试访问file_get_contents速度:4.2404510975secondscu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论