博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
curl实现多路并发请求(请求数量大时再次分割实现循环处理)
阅读量:4984 次
发布时间:2019-06-12

本文共 2141 字,大约阅读时间需要 7 分钟。

function multiple_threads_request($data,$url,$chuck_num=20,$wait_usec = 0){    $result = [];    if (empty($data) || empty($url)) {        $send_data = array_chunk($data, $chuck_num,true);        foreach ($send_data as $son_data){            $mh = curl_multi_init(); //初始化一个curl批处理句柄资源            $handle = [];            foreach ($son_data as $k=>$val)            {                $curl_array[$k] = curl_init($url);                curl_setopt($handle[$k], CURLOPT_RETURNTRANSFER, 1);                curl_setopt($handle[$k], CURLOPT_SSL_VERIFYPEER, false);                curl_setopt($handle[$k], CURLOPT_SSL_VERIFYHOST, false);                curl_setopt($handle[$k], CURLOPT_POST, 1);                curl_setopt($handle[$k], CURLOPT_TIMEOUT,10);                curl_setopt($handle[$k], CURLOPT_HEADER, 0);                curl_setopt($handle[$k], CURLOPT_POSTFIELDS,$val);                //向curl批处理句柄资源中添加单独的curl句柄资源。curl_multi_add_handle函数有两个参数,第一个参数表示一个curl批处理句柄资源                //第二个参数表示一个单独的curl句柄资源                curl_multi_add_handle($mh, $handle[$k]);            }            $running = 0;            do {                //解析一个curl批处理句柄,curl_multi_exec函数有两个参数,第一个表示一个批处理句柄资源,第二个参数是一个应用值参数,表示                //剩余需要处理的单个的curl句柄资源。                curl_multi_exec($mh, $running);//持续调用curl_multi_exec                if ($wait_usec > 0) /* 每个 connect 要间隔多久 */                    usleep($wait_usec); // 250000 = 0.25 sec            } while ($running > 0);            foreach ($son_data as $k=>$val)            {                $return = curl_multi_getcontent($handle[$k]);//根据需要循环调用curl_multi_getcontent                $return[$k] = (curl_errno($handle[$k]) == 0) ? $return : false;                $http_code = curl_getinfo($handle[$k],CURLINFO_HTTP_CODE); //获取http错误码                $curl_error = curl_error($handle[$k]); //获取curl错误码                //移除curl批处理句柄资源中的某个句柄资源,curl_multi_remove_handle()函数有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄资源。                curl_multi_remove_handle($mh,$handle[$k]);            }            curl_multi_close($mh);        }    }    return $result;}

 

转载于:https://www.cnblogs.com/quepq/p/9860564.html

你可能感兴趣的文章
PHPCMS V9{loop subcat(0,0,0,$siteid) $r}怎么解释?
查看>>
Perl/Nagios – Can’t locate utils.pm in @INC
查看>>
Javascript 有用参考函数
查看>>
【转】Simulink模型架构指导
查看>>
[转载]java开发中的23种设计模式
查看>>
揭秘:黑客必备的Kali Linux是什么,有哪些弊端?
查看>>
linux系统的远程控制方法——学神IT教育
查看>>
springboot+mybatis报错Invalid bound statement (not found)
查看>>
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
MongoDB的简单使用
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
SQL中Group By的使用
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6203 ping ping ping
查看>>
Fireworks基本使用
查看>>