知尚网络

  • 首页
  • 蜘蛛池
  • 站群
  • SEO技术
  • php技术
  • python技术
  • 服务器技术
  • 资源下载
  1. 首页
  2. php技术
  3. 正文

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

2021年3月1日 318点热度 0人点赞 0条评论

当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);
标签: 暂无
最后更新:2021年4月12日

zhishang

这个人很懒,什么都没留下

点赞

COPYRIGHT © 2022 知尚网络. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021000372号