比file_get_contents稳定的curl_get_contents分享


Posted in PHP onJanuary 11, 2012

分享一个实际在用的函数:

/*比file_get_contents稳定的多!$timeout为超时时间,单位是秒,默认为1s。*/ 
function curl_get_contents($url,$timeout=1) { 
$curlHandle = curl_init(); 
curl_setopt( $curlHandle , CURLOPT_URL, $url ); 
curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 ); 
curl_setopt( $curlHandle , CURLOPT_TIMEOUT, $timeout ); 
$result = curl_exec( $curlHandle ); 
curl_close( $curlHandle ); 
return $result; 
} 
$hx = curl_get_contents('https://3water.com');

相信使用过file_get_contents函数的朋友都知道,当获取的$url访问不了时,会导致页面漫长的等待,甚至还能导致PHP进程占用CPU达100%,因此这个函数就诞生了。curl的一些常识介绍
保留原file_get_contents函数的原因是当读取本地文件时,用原生的file_get_contents显然更合适。
另来自张宴的file_get_contnets的优化,具体可看:https://3water.com/article/28030.htm
同样是设置超时时间来解决这个问题。如果没装curl,就必须得用这个方式了。
$ctx = stream_context_create(array( 
'http' => array( 
'timeout' => 1 //设置一个超时时间,单位为秒 
) 
) 
); 
file_get_contents("https://3water.com/", 0, $ctx);

另外,据不完全测试,使用curl获取页面比用file_get_contents稳定的多。
PHP 相关文章推荐
第六节 访问属性和方法 [6]
Oct 09 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
thinkphp普通查询与表达式查询实例分析
Nov 24 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
学习使用curl采集curl使用方法
Jan 11 #PHP
PHP 日,周,月点击排行统计
Jan 11 #PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 #PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 #PHP
php 带逗号千位符数字的处理方法
Jan 10 #PHP
php mysql 判断update之后是否更新了的方法
Jan 10 #PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 #PHP
You might like
十天学会php之第二天
2006/10/09 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
css3的transition属性详解
2014/12/15 HTML / CSS
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
美国智能家居专家:tink
2019/06/04 全球购物
PyQt QMainWindow的使用示例
2021/03/24 Python
高中生职业规划范文
2014/03/09 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
红色经典电影观后感
2015/06/18 职场文书
诚实守信主题班会
2015/08/13 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python