PHP 如何同时向一个API发起三次curl post请求

假如有一个数组,数组里面有三个标题,我要同时向某API分别传入这三个标题,让这个API给我生成三篇文章,用PHP语言怎么写这个同时请求呢。如果我们通过循环来执行的话,只能等一次循环curl请求完成了才能进行下一次,这样并不是同时进行的三次请求。

经过模板兔的一翻研究,我们可以使用PHP的cURL库的curl_multi_init来实现三个并行请求。

具体步骤如下:

  1. 创建一个数组,包含要发送到API的三个标题。
$titles = array("Title 1", "Title 2", "Title 3");
  1. 创建三个cURL句柄,并设置各自的请求参数和URL。
$requests = array();
foreach ($titles as $title) {
    $handle = curl_init();
    curl_setopt_array($handle, array(
        CURLOPT_URL => 'http://mobantu.com/test.php',
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => http_build_query(array('title' => $title)),
        CURLOPT_RETURNTRANSFER => true
    ));
    $requests[] = $handle;
}
  1. 将这些句柄放入curl_multi_*函数中进行多线程操作。
$multi_handle = curl_multi_init();
foreach ($requests as $request) {
    curl_multi_add_handle($multi_handle, $request);
}

// 让所有请求同时执行,直到有其中一个执行完毕为止
do {
    $status = curl_multi_exec($multi_handle, $active);
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);

// 获取每一个请求的响应内容
$responses = array();
foreach ($requests as $request) {
    $response = curl_multi_getcontent($request);
    $responses[] = $response;

    // 关闭该请求的句柄
    curl_multi_remove_handle($multi_handle, $request);
}

// 关闭全部协程句柄
curl_multi_close($multi_handle);
  1. 最终得到的$responses就是三篇文章的内容了。

原文:https://www.mobantu.com/10034.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值