分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

curl实现多路并发请求(请求数量大时再次分割实现循环处理)

发布时间:2023-09-06 02:19责任编辑:沈小雨关键词:url
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; ???????????????//移除curl批处理句柄资源中的某个句柄资源,curl_multi_remove_handle()函数有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄资源。 ???????????????curl_multi_remove_handle($mh,$handle[$k]); ???????????} ???????????curl_multi_close($mh); ???????} ???} ???return $result;}

curl实现多路并发请求(请求数量大时再次分割实现循环处理)

原文地址:https://www.cnblogs.com/quepq/p/9860564.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved