PHP使用curl替代file_get_contents

凉白开 PHP541,16417字数 1336阅读4分27秒阅读模式

初学php的朋友们,很容易翻一个错误,在写采集程序或者调用api接口总会有线考虑到使用file_get_contents函数来或许内容,程序的访问量不大倒是没什么影响,但是访问量提升了那非常的悲剧了,你会发现服务器负载飙升,最后服务器宕机.初入公司便遇到这个问题,遂使用curl取代此命令,并且禁用远程file_get_contents,它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP.

<?php
$url='http://www.baidu.com';

$ch = curl_init();

$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

echo $file_contents;

//function_exists()替换

if(function_exists('file_get_contents')) {
$file_contents = file_get_contents($url);
} else {
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
?>

禁用file_get_contents方法:
打开php.ini,配置如下:文章源自运维生存时间-https://www.ttlsa.com/php/curl-replace-ile_get_contents/

allow_url_fopen = On
改为
allow_url_fopen = Off

如果是fastcgi重启php-fpm,如果是apache+php那直接重启apache即可.文章源自运维生存时间-https://www.ttlsa.com/php/curl-replace-ile_get_contents/

file_get_contents与curl对比结果.文章源自运维生存时间-https://www.ttlsa.com/php/curl-replace-ile_get_contents/

file_get_contents

curl替代file_get_contents

福建省福州市file_get_contents:0.4679060000 seconds
福建省福州市curl:0.3150200000 seconds文章源自运维生存时间-https://www.ttlsa.com/php/curl-replace-ile_get_contents/

这边分别使用file_get_contents与curl使用淘宝ip库来获取IP地址信息,可以发现file_get_contents和curl性能的差距还是比较大.file_get_contents耗时0.467秒,curl使用0.315秒.差了0.152秒,有30%性能差距. 淘宝IP库使用方法打开连接文章源自运维生存时间-https://www.ttlsa.com/php/curl-replace-ile_get_contents/

转载请注明出处:https://www.ttlsa.com/html/1821.html文章源自运维生存时间-https://www.ttlsa.com/php/curl-replace-ile_get_contents/

文章源自运维生存时间-https://www.ttlsa.com/php/curl-replace-ile_get_contents/文章源自运维生存时间-https://www.ttlsa.com/php/curl-replace-ile_get_contents/
weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 28/07/2013 09:20:39
  • 转载请务必保留本文链接:https://www.ttlsa.com/php/curl-replace-ile_get_contents/
  • file_get_contents
  • php curl
评论  5  访客  3
    • 运维生存时间网友
      运维生存时间网友 9

      使用file_get_contents函数来或许内容
      笔误: 获取

      • 匿名
        匿名 9

        使用file_get_contents函数来或许内容
        笔误: 获取

        • 过客
          过客 9

          后来工作时,我发现了,做采集还是curl_init要快点。所以建议用curl_init

        评论已关闭!