200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > PHP 如何同时向一个API发起三次curl post请求

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

时间:2020-02-02 07:47:11

相关推荐

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

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

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

具体步骤如下:

创建一个数组,包含要发送到API的三个标题。

$titles = array("Title 1", "Title 2", "Title 3");

创建三个cURL句柄,并设置各自的请求参数和URL。

$requests = array();foreach ($titles as $title) {$handle = curl_init();curl_setopt_array($handle, array(CURLOPT_URL => '/test.php',CURLOPT_POST => true,CURLOPT_POSTFIELDS => http_build_query(array('title' => $title)),CURLOPT_RETURNTRANSFER => true));$requests[] = $handle;}

将这些句柄放入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);

最终得到的$responses就是三篇文章的内容了。

原文:/10034.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。