curl_multi_init单线程改多线程实现
原来单线程的curl实现如下:
function post($url, $data = '', $head = 'application/x-www-form-urlencoded') { // ... $output = curl_exec($ch); curl_close($ch); return $output; }
登录后复制
现在要将其改为多线程,思路是将数据数组分成小块,然后对每一块都创建一个单独的curl句柄。
$newData = array_chunk($data, 10, true); foreach ($newData as $k => $tmp) { $mh = curl_multi_init(); $chs = []; foreach ($tmp as $key => $url) { $ch = curl_init(); $chs[$key] = $ch; // ... curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $tmp); curl_multi_add_handle($mh, $ch); } $active = null; do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } foreach ($chs as $key => $ch) { $res[$k][$key] = curl_multi_getcontent($ch); curl_multi_remove_handle($mh, $ch); } curl_multi_close($mh); } var_dump($res);
登录后复制
以上就是如何将单线程的curl_multi_init改造成多线程并发请求?的详细内容,更多请关注抖狐科技其它相关文章!
本站文章均为抖狐网站建设摘自权威资料,书籍,或网络原创文章,如有版权纠纷或者违规问题,请即刻联系我们删除,我们欢迎您分享,引用和转载,我们谢绝直接复制和抄袭!感谢...
我们猜你喜欢
-
《王者荣耀》锦绣山河祈愿活动玩法介绍
锦绣山河祈愿活动震撼来袭王者荣耀再度重磅出击,推出“锦绣山河祈愿活动”,让玩家们领略国风的独特魅力,感受现代科技的无限可能。活动玩法丰富多样,福利丰厚,为玩家们带来前所未有的游戏体验。php小编百草提...
-
通配符的主要作用
通配符的主要作用是用于文本搜索中匹配任意或未知字符,应用场景包括文件搜索和替换、正则表达式、数据筛选和处理、文本处理和分析。具体作用如下:匹配任意字符(星号):匹配任意字符一次或多次。匹配单个字符(问...
-
方舟生存进化快速升级
1、出生后~造把搞子,然后采集采集(主要是收集黑果子)然后造个矛! 2、杀个大乌龟(有2个树进的可以无脑卡龟,也可以一边退一边打) 3、取肉 4、找小豆比龙驯养(会喷毒的小龙) 蹲着家里也能升级 1、...
-
如何使用 Echarts 热力图实现数据分段显示不同颜色?
echarts热力图实现分段颜色 在Echarts热力图中,如果希望根据数据值的不同,将热力点呈现为不同的颜色分段,可以利用visualMap的range和inRange.color属性。 实现步骤:...
-
Java 函数与 Java 方法的用法比较
Java 函数与 Java 方法的用法比较 在 Java 中,函数和方法这两个术语经常互换使用,但它们之间存在细微差别。了解它们的差异至关重要,因为它可以帮助您编写更清晰、更可维护的代码。 函数函数是...