协策网络,专业做网站,优秀上海网站制作公司,提供企业建站、网站设计、网页制作,专业网页设计师和网站制作技术工程师为您量身打造个性企业电子商务网站。

此页面上的内容需要较新版本的 Adobe Flash Player。

获取 Adobe Flash Player

  文章汇总 Article Summary
当前位置:协策网络 >> 文章中心 >> 网站建设 >> 浏览文章
 

浅谈PHP函数file_get_contents与curl 效率及稳定性

作者:佚名    标签:    日期:2013年06月18日    类别:网站建设

 

         相信很多朋友在做网站内容抓取采集功能的时候都会用到PHP内置函数file_get_contents,这个函数使用起来方便快捷,但使用起来总会遇到获取失败的种种问题。经过上网搜索相关资料发现,原来是函数获取内容超时导致的。小编按照资料中提供的解决方法设置了超时时间,可多数时候还是不会奏效。

下面为超时解决方法:

 点击浏览下一页

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

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

迫不得已,改用curl库,写了一个函数替换。使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展。如果没有开启,请按照以下方法开启:

1.将PHP安装文件夹下的三个文件php_curl.dll(可能在ext文件夹中),libeay32.dll,ssleay32.dll 复制到 %windir%/system32下;

2.打开php.ini(可能在PHP环境的安装目录下,默认在c:WINDOWS目录下),将;extension=php_curl.dll头部的分号去掉;

3.重启php的服务(apache或者IIS),如重启IIS,运行iisreset即可。

 

替换函数:


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函数,不但稳定速度快,还能假冒浏览器欺骗目标地址哦!



更多
  您可能感兴趣的文章推荐  
 
上一篇:汽车行业蓝色网站设计页面作品展示 下一篇:分享电子行业黑白色网站设计制作案例
协策网络公司拥有专业的网站建设开发团队,超过四年以上的网站建设、网页制作经验,我们可承接企业电子商务网站建设、企业展示型网页设计和功能型网站制作等各类型网站设计制作。
     
首 页  |  基础服务  |  网站建设  |  网站优化  |  成功案例  |  协策博客  |  关于我们  |  联系我们
COPYRIGHT © 上海协策网络科技有限公司 2008-2014 网站地图 SITEMAP 上海做网站公司 沪ICP备08009778号

地址:上海市共和新路425号凯鹏国际大厦13楼G座(近3、4、8号线)

电话:021-51085186 传真:021-56555059 咨询:+(86)18018609689
上海做网站建设网页设计制作公司