php exec并行,[PHP] php使用curl_multi_exec并行同时执行http请求

当php代码要对外请求多个接口的时候 , 可以使用下面的方式并行执行多个请求

主要是使用curl_multi_exec函数实现

代码中请python基础教程求的test.php文件 , 是sleep(10)秒

如果按传统的逐行执行的方式 , 请求两次这个接口代码会阻c#教程塞20秒的时间 , 现在使用同时并行执行的方式,代码只会阻塞10秒

并且请求也是会同时到达对方接口的

// 创建一对cURL资源

$ch1 = curl_init();

$ch2 = curl_init();

// 设置URL和相应的选项

curl_setopt($ch1, CURLOPT_URL, "http://81.69.45.114/test/test.php");

curl_setopt($ch1, CURLOPT_HEADER, 0);

curl_setopt($ch2, CURLOPT_URL, "http://81.69.45.114/test/test.php");

curl_setopt($ch2, CURLOPT_HEADER, 0);

// 创建批处理cURL句柄

$mh = curl_multi_init();

// 增加2个句柄

curl_multi_add_handle($mh,$ch1);

curl_multi_add_handle($mh,$ch2);

$active = null;

// 执行批处理句柄

do {

$mrc = curl_multi_exec($mh, $active);

var_dump($mrc);

} 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);

}

}

// 关闭全部句柄

curl_multi_remove_handle($mh, $ch1);

curl_multi_remove_handle($mh, $ch2);

curl_multi_close($mh);

执行后nginx日志的展示:

5115d3ada8e6f41eb3da9ff43a05f273.png

16349ce452f209ae86c851713ee41f36.png

开源作品

开源GO语言在线WEB客服即时通讯管理系统GO-FLY

github地址:go-fly

在线测试地址:https://gofly.sopans.com

爱发电平台

https://afdian.net/@taoshihan

标签:multi,http,exec,mh,CURLM,curl,php,mrc

来源: https://blog.csdn.net/chinaherolts2008/article/details/114228892

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值