RollingcURLPHP并发最佳实践.doc

上传人:scccc 文档编号:11947055 上传时间:2021-11-13 格式:DOC 页数:11 大小:25KB
返回 下载 相关 举报
RollingcURLPHP并发最佳实践.doc_第1页
第1页 / 共11页
RollingcURLPHP并发最佳实践.doc_第2页
第2页 / 共11页
RollingcURLPHP并发最佳实践.doc_第3页
第3页 / 共11页
RollingcURLPHP并发最佳实践.doc_第4页
第4页 / 共11页
RollingcURLPHP并发最佳实践.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《RollingcURLPHP并发最佳实践.doc》由会员分享,可在线阅读,更多相关《RollingcURLPHP并发最佳实践.doc(11页珍藏版)》请在三一文库上搜索。

1、Rolling cURL PHP 并发最佳实践在实际项目或者自己编写小工具 (比如新闻聚合 ,商品价 格监控,比价)的过程中 , 通常需要从第 3 方网站或者 API 接 口获取数据 , 在需要处理 1 个 URL 队列时 , 为了提高性能 , 可以采用 cURL 提供的 curl_multi_* 族函数实现简单的并发 .本文将探讨两种具体的实现方法 , 并对不同的方法做简单的 性能对比 .1. 经典 cURL 并发机制及其存在的问题 经典的 cURL 实现机制在网上很容易找到 , 比如参考 PHP 在 线手册的如下实现方式 :123456891011121314151618181920212

2、2232425262729293031323334353637384040414243444546function classic_curl($urls, $delay) $queue = curl_multi_init();$map = array();foreach ($urls as $url) / create cURL resources$ch = curl_init();/ set URL and other appropriate optionscurl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_TIMEOUT

3、, 1);curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_NOSIGNAL, true); / add handle curl_multi_add_handle($queue, $ch); $map$url = $ch;$active = null;/ execute the handles do $mrc = curl_multi_exec($queue, $active); while ($mrc = CURLM_CALL_MULT

4、I_PERFORM);while ($active > 0 && $mrc = CURLM_OK) if (curl_multi_select($queue, 0.5) != -1) do $mrc = curl_multi_exec($queue, $active); while ($mrc =CURLM_CALL_MULTI_PERFORM);$responses = array();foreach ($map as $url=>$ch) $responses$url =callback(curl_multi_getcontent($ch), $delay);curl_multi_remove_handle($queue, $ch); curl_close($ch);curl_multi_close($queue);return $responses;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1