利用curl并发来提高页面访问速度
在我们平时的程序中难免出现同时访问几个接口的情况,平时我们用curl进行访问的时候,一般都是单个、顺序访问,假如有3个接口,每个接口耗时500毫秒那么我们三个接口就要花费1500毫秒了,这个问题太头疼了严重影响了页面访问速度,有没有可能并发访问来提高速度呢?今天就简单的说一下,利用curl并发来提高页面访问速度,
希望大家多指导。
1、老的curl访问方式以及耗时统计
function curl_fetch($url, $timeout=3){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$data = curl_exec($ch);$errno = curl_errno($ch);if ($errno>0) {$data = false;}curl_close($ch);return $data;
}
function microtime_float()
{list($usec, $sec) = explode(" ", microtime());return ((float)$usec + (float)$sec);
}
$url_arr=array("taobao"=>"http://www.taobao.com","sohu"=>"http://www.sohu.com","sina"=>"http://www.sina.com.cn",);$time_start = microtime_float();$data=array();foreach ($url_arr as $key=>$val){$data[$key]=curl_fetch($val);}$time_end = microtime_float();$time = $time_end - $time_start;echo "耗时:{$time}";
?>
耗时:0.614秒
2、curl并发访问方式以及耗时统计
<?php
function curl_multi_fetch($urlarr=array()){$result=$res=$ch=array();$nch = 0;$mh = curl_multi_init();foreach ($urlarr as $nk => $url) {$timeout=2;$ch[$nch] = curl_init();curl_setopt_array($ch[$nch], array(CURLOPT_URL => $url,CURLOPT_HEADER => false,CURLOPT_RETURNTRANSFER => true,CURLOPT_TIMEOUT => $timeout,));curl_multi_add_handle($mh, $ch[$nch]);++$nch;}/* wait for performing request */do {$mrc = curl_multi_exec($mh, $running);} while (CURLM_CALL_MULTI_PERFORM == $mrc);while ($running && $mrc == CURLM_OK) {// wait for networkif (curl_multi_select($mh, 0.5) > -1) {// pull in new data;do {$mrc = curl_multi_exec($mh, $running);} while (CURLM_CALL_MULTI_PERFORM == $mrc);}}if ($mrc != CURLM_OK) {error_log("CURL Data Error");}/* get data */$nch = 0;foreach ($urlarr as $moudle=>$node) {if (($err = curl_error($ch[$nch])) == '') {$res[$nch]=curl_multi_getcontent($ch[$nch]);$result[$moudle]=$res[$nch];}else{error_log("curl error");}curl_multi_remove_handle($mh,$ch[$nch]);curl_close($ch[$nch]);++$nch;}curl_multi_close($mh);return $result;
}
$url_arr=array("taobao"=>"http://www.taobao.com","sohu"=>"http://www.sohu.com","sina"=>"http://www.sina.com.cn",);
function microtime_float()
{list($usec, $sec) = explode(" ", microtime());return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
$data=curl_multi_fetch($url_arr);
$time_end = microtime_float();
$time = $time_end - $time_start;echo "耗时:{$time}";
?>
输出结果array('taobao'=>result,'sina'=>result,'baidu'=>result) ;
耗时:0.316秒
帅气吧整个页面访问后端接口的时间节省了一半
3、curl相关参数
来自:http://cn2.php.net/manual/en/ref.curl.php
curl_close — Close a cURL session
curl_copy_handle — Copy a cURL handle along with all of its preferences
curl_errno — Return the last error number
curl_error — Return a string containing the last error for the current session
curl_exec — Perform a cURL session
curl_getinfo — Get information regarding a specific transfer
curl_init — Initialize a cURL session
curl_multi_add_handle — Add a normal cURL handle to a cURL multi handle
curl_multi_close — Close a set of cURL handles
curl_multi_exec — Run the sub-connections of the current cURL handle
curl_multi_getcontent — Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set
curl_multi_info_read — Get information about the current transfers
curl_multi_init — Returns a new cURL multi handle
curl_multi_remove_handle — Remove a multi handle from a set of cURL handles
curl_multi_select — Wait for activity on any curl_multi connection
curl_setopt_array — Set multiple options for a cURL transfer
curl_setopt — Set an option for a cURL transfer
curl_version — Gets cURL version information
原文地址:http://www.searchtb.com/2010/12/using-multicurl-to-improve-performance.html?spm=0.0.0.0.onjnnY
转载于:https://www.cnblogs.com/naledao/p/3644806.html
利用curl并发来提高页面访问速度相关推荐
- 如何让提高网站访问速度
如何让提高网站访问速度 整理方案一: 网站访问速度可以直接影响到网站的流量,而网站的访问量几乎与网站的利益直接挂钩,因此网站的速度问题成为企业及站长十分关注的问题.现在网站越来越多,不少朋友的网站打开 ...
- 提高WordPress访问速度与性能的技巧总结
性能是任何成功网站的一个关键因素.越来越多的人选择使用WordPress搭建个人博客.CMS内容展示或是企业网站,但可能由于高流量或一些未知的原因,导致你的WordPress性能越来越低,尤其对于大多 ...
- 提高页面显示速度的秘技
在安排Web页面的布局时,最常用的方法之一是用HTML表格界定页面的结构.例如,假设Web页面由顶端的导航条和它下面的两栏(列)构成--左边的列是一个导航条,右边的列是实际安置内容的区域.对于这样一个 ...
- 仅使用CSS提高页面渲染速度
用户在访问一个Web网站(页面)或应用时,总是希望它的加载速度快,功能流畅.如果过于慢,用户就很有可能失去耐心而离开你的Web网站或应用.作为开发人员,给自己应用提供更快的访问速度,提供很好的用户体验 ...
- 提高github访问速度(深入研究底层网络通信、域名解析等原理)
1 去这个网站 http://tool.chinaz.com/dns/找到ttl延迟较低的服务器ip 2 以管理员模式打开cmd,再通过以下命令打开cmd notepad C:\Windows\Sys ...
- 优化网页代码提高网页访问速度
一.不要将整个页面放到到一个table中 -----[感受最深] 一般大家都是用表格来进行布局的,将整个页面的内容都塞进了一个Table(表格)里,然后再由单元格td来划分各个"块" ...
- 提高网站访问速度的十个技巧
网站的访问速度和性能对用户体验来说是非常重要的.如果你的网站访问非常的慢,你不仅会失去用户,而且更可怕的是你会失去潜在的客户.像Google这样的互联网巨头也会把网站访问速度作为排名的一个参数. ...
- 小麦盒子cdn_CDN加速,提高网站访问速度的最佳方法
上个月,一台湾的朋友向我反映了他的网站现在十分糟糕的情况. 事情是这样的,这位台湾朋友有一网站,面向用户主要在中国大陆,2010年10月,他把网站寄存地从台湾移到了广东,他租用的是独立服务器,使用线路 ...
- 提高页面载入速度简单易行的四个办法。
1.去掉页面中不用的JS.CSS引用. 2.降低页面连接数,即降低请求server的次数. 3.配置GZIP.对页面进行压缩,加快页面从server到浏览器的传输速度. 4.检查页面查询SQL是否使用 ...
最新文章
- 使用webpack-dev-server设置反向代理解决前端跨域问题
- 模组使用之NB-IoT模组的工作模式、PSM、DRX和eDRX状态说明
- matlab谐波仿真代码,matlab的谐波仿真程序基于ip-iq法???怎么出不来图像啊???...
- transmac使用方法_Mac苹果电脑降级方法?
- 不支持所上传的文件格式。请确认选择的文件无误。_职场人必备!如何把PDF文件转换成word文档?...
- linux 内核块设备驱动,你了解Linux 块设备驱动?
- 游戏主播们为什么早上不玩游戏?直播圈里还有哪些不成文的规定呢?
- linux拆分文件会影响源文件吗,linux split拆分文件
- 2017全国计算机二级office题库,2017年计算机二级office题库(附答案)
- 快速使用注解方式实现aop切面编程
- 得物(毒)加密算法解析 得物逆向
- IntelliJ Save Action
- Java中的switch
- 从0到1搭建大数据平台之数据计算
- react native 添加自定义字体
- 免费软著申请登记详细教程
- html字数不同相同宽度的按钮,HTML_按钮在IE中两边被拉伸的 BUG,大家在写按钮(input、button) - phpStudy...
- 如何在电子邮件中推销自己(服务)
- [Python模块学习]用tinify模块压缩和优化图片
- [ pikachu ] 靶场通关之 XSS (二) --- 反射型 XSS 之 get 型
热门文章
- python均线斜率_一根20日均线闯天下?——量化回测“压箱底指标”
- 怎么理解python的__init___理解Python中super()和__init__()方法
- 关于微信聊天记录双击弹出具体显示内容的效果
- 机器学习 数据量不足问题----1 做好特征工程 2 不要用太多的特征 3 做好交叉验证 使用线性svm...
- Golang通道的无阻塞读写的方法示例
- 37、Django实战第37天:404以及500页面配置
- propertychange 属性说明
- IDEA Spark程序报错处理
- 【bzoj3524】【Poi2014】【Couriers】可持久化线段树(主席树)水题
- THE TOP FILE(top文件详解)