程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(1)

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

发布于2021-03-14 05:47     阅读(805)     评论(0)     点赞(11)     收藏(1)


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

主要是使用curl_multi_exec函数实现

代码中请求的test.php文件 , 是sleep(10)秒

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

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

<?php
// 创建一对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日志的展示:

 

 

原文链接:https://www.cnblogs.com/taoshihan/p/14453045.html



所属网站分类: 技术文章 > 博客

作者:我叫你一声你敢答应吗

链接:http://www.phpheidong.com/blog/article/2876/1774200fa9200236b99d/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

11 0
收藏该文
已收藏

评论内容:(最多支持255个字符)