RollingcURLPHP并发最佳实践

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

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

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

2、2324252627#29303132333435363738#40414243444546function 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, 1

3、);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_MULTI_P

4、ERFORM);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备13022795号 | 川公网安备 51140202000112号