rolling_curl curl批量采集函数留份

摘自:http://www.searchtb.com/2012/06/rolling-curl-best-practices.html

 1 function rolling_curl($urls, $delay=0) {
 2             $queue = curl_multi_init();
 3                 $map = array();
 4
 5             foreach ($urls as $url) {
 6                 $ch = curl_init();
 7
 8                 curl_setopt($ch, CURLOPT_URL, $url);
 9                 curl_setopt($ch, CURLOPT_TIMEOUT, 5);
10                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
11                 curl_setopt($ch, CURLOPT_HEADER, 0);
12                 curl_setopt($ch, CURLOPT_NOSIGNAL, true);
13
14                 curl_multi_add_handle($queue, $ch);
15                 $map[(string) $ch] = $url;
16             }
17           /*主要内容*/
18             $responses = array();
19             do {
20                 while (($code = curl_multi_exec($queue, $active)) == CURLM_CALL_MULTI_PERFORM) ;
21
22                 if ($code != CURLM_OK) { break; }
23
24                 // a request was just completed -- find out which one
25                 while ($done = curl_multi_info_read($queue)) {
26
27                     // get the info and content returned on the request
28                     $info = curl_getinfo($done[‘handle‘]);              //可以通过info的信息来判断是否连接成功
29                     $error = curl_error($done[‘handle‘]);
30                     // $results = callback(curl_multi_getcontent($done[‘handle‘]), $delay);              //curl_multi_getcontent($done[‘handle‘]) 已经可以获取到详细内容,即可以开始业务逻辑
31                     $responses[$map[(string) $done[‘handle‘]]] = compact(‘info‘, ‘error‘, ‘results‘);
32
33                     // remove the curl handle that just completed
34                     curl_multi_remove_handle($queue, $done[‘handle‘]);
35                     curl_close($done[‘handle‘]);
36                 }
37
38                 // Block for data in / output; error handling is done by curl_multi_exec
39                 if ($active > 0) {
40                     curl_multi_select($queue, 0.5);
41                 }
42
43             } while ($active);
44            /*主要内容*/
45 curl_multi_close($queue); 46 return $responses; 47  } 48 49 50 }
时间: 2024-10-09 01:02:38

rolling_curl curl批量采集函数留份的相关文章

curl数据采集系列之单页面采集函数get_html

在做数据采集时经常要使用到curl+正则的方式采集需要的数据 根据自己的工作经验 把自己写的一些常用自定义函数 拿到博客园来分享 如果有写得不恰当的地方 请多多指教 这是一个系列 没办法在一两天写完 所以一篇一篇的发布 大致大纲: 1.curl数据采集系列之单页面采集函数get_html 2.curl数据采集系列之多页面并行采集函数get_htmls 3.curl数据采集系列之正则处理函数get _matches 4.curl数据采集系列之代码分离 5.curl数据采集系列之并行逻辑控制函数we

转 PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)

PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据) 通过curl_setopt()函数可以方便快捷的抓取网页(采集很方便),curl_setopt 是php的一个扩展库 使用条件:需要在php.ini 中配置开启.(PHP 4 >= 4.0.2)       //取消下面的注释 extension=php_curl.dll 在Linux下面,需要重新编译PHP了,编译时,你需要打开编译参数——在configure命令上加上“–with-curl” 参数. 1.

R中的高效批量处理函数(lapply sapply apply tapply mapply)(转)

转自:http://blog.csdn.net/wa2003/article/details/45887055 R语言提供了批量处理函数,可以循环遍历某个集合内的所有或部分元素,以简化操作. 这些函数底层是通过C来实现的,所以效率也比手工遍历来的高效.批量处理函数有很重要的apply族函数:lapply sapply apply tapply mapply.apply族函数是高效能计算的运算向量化(Vectorization)实现方法之一,比起传统的for,while常常能获得更好的性能. ap

发送curl请求的函数

//发送curl请求的函数function curl_request($url, $post = false, $data=array(), $https = false){ //使用curl_init初始化一个curl请求 $ch = curl_init($url); //默认为get请求不需要设置请求方式和请求参数 //如果是post请求 if($post){ //设置请求方式 curl_setopt($ch, CURLOPT_POST, true); //设置请求参数 curl_setop

独具匠心的采采Lazada批量采集上货管理软件-100个理由选择它

采采Lazada批量采集上货ERP管理软件如何独具匠心? 一.前所未有的拖放方式(仅需从右侧采集源平台将产品拖放到左侧Lazada店铺),即可实现Lazada产品的采集上传发布一气呵成,所见即事实 二.仅拖放一个步骤可瞬间上传一个产品300多个SKU,甚至是禁售品,简直要炸天了 三.产品的信息和视频完美复制发布,牛B的X小秘也不能做到 四. 自动翻译自动计价,实现一步到位,您只需手动拖放一下而已 五.绑定任意个店铺,多店铺进行分组管理,店群商家们的福音 六. 批量删除产品/SKU,批量上下架产品

php curl简单采集图片生成base64编码(并附curl函数参数说明)

许多年前的代码突然拿来一用,特做此笔记(此处的code用来定位内部错误位置,非http code) [php] view plain copy <?php $url="http://c.hiphotos.baidu.com/image/w%3D210/sign=ed30880babec8a13141a50e1c7029157/d52a2834349b033be1a9503e17ce36d3d539bd35.gif"; function curl_url($url,$type=0,

详解php的curl几个函数

关于php的curl一系列函数,这里解释一下它们的作用. 在html中,我们可以通过form设置http的post和get提交,但假如我们获取的数据不是从html中来的,而是php脚本主动向其他服务器提交呢?这个时候,我们应该怎么实现post和get提交数据呢?答案就是php的curl函数或者stream_context_create函数,还有fsockopen函数等等方式,这里讲一下curl的提交设置,其他两种有时间会写一下. curl的函数实现http提交,关键就在四个函数: 一个是:cur

zencart产品批量采集伪原创方法,再也不用担心与别人的数据重复了

首先,请你提供与产品相关的关键词一份,至于关键词如何来,相信做SEO的你很清楚了,SEO关键词搜索工具应该很多,比如谷歌相关关键词搜索,用记事本的形式保存为每行一个关键词.采集产品的时候,我会帮你将关键词插入到对应的地方.采集结果就是easy_populate.csv批量表的形式 一.产品SEO三要素伪原创 keywords.txt: veste barbour angers barbour veste beaufort barbour veste bedale veste barbour ja

PHP中CURL方法curl_setopt()函数的一些参数

转载自http://blog.csdn.net/superbirds/article/details/7532277 bool curl_setopt (int ch, string option, mixed value) curl_setopt()函数将为一个CURL会话设置选项.option参数是你想要的设置,value是这个选项给定的值. 下列选项的值将被作为长整形使用(在option参数中指定):     •    CURLOPT_INFILESIZE : 当你上传一个文件到远程站点,