• 技术文章 >后端开发 >php教程

    探讨file_get_contents与curl效率及稳定性的分析_PHP教程

    2016-07-21 15:08:24原创552

    做过好多抓取别家网站内容的产品,习惯了使用方便快捷的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函数,不但稳定速度快,还能假冒浏览器欺骗目标地址哦!

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/327449.htmlTechArticle做过好多抓取别家网站内容的产品,习惯了使用方便快捷的file_get_contents函数,但是总是会遇到获取失败的问题,尽管按照手册中的例子设...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:探讨 file get contents curl 效率 稳定 性的 分析 做过 好多 抓取 别家 网站 内容
    上一篇:php全局变量和类配合使用深刻理解_PHP教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一文详解PHP实现职责链设计模式(附代码示例)• php实现通过JSON RPC与go通讯(附代码)• 浅析怎么使用PHP做异步爬取数据• PHP8.3要有新函数了!(json_validate函数说明)• 设计API接口时,要注意这些地方!
    1/1

    PHP中文网