函数名称:curl_multi_add_handle()
适用版本:PHP 5, PHP 7
函数描述:curl_multi_add_handle() 函数将单个 cURL 句柄添加到 curl 多个句柄中,使多个 cURL 请求可以同时进行。
语法:bool curl_multi_add_handle ( resource $mh , resource $ch )
参数:
$mh
:必需。curl 多个句柄资源,通过 curl_multi_init() 函数创建。$ch
:必需。单个 cURL 句柄资源,通过 curl_init() 函数创建。
返回值:
- 该函数返回一个布尔值,表示是否成功将 cURL 句柄添加到 curl 多个句柄中。如果成功,则返回 true;否则返回 false。
示例:
// 创建 curl 多个句柄
$mh = curl_multi_init();
// 创建第一个 cURL 句柄
$ch1 = curl_init("https://www.example.com/api1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);
// 创建第二个 cURL 句柄
$ch2 = curl_init("https://www.example.com/api2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);
// 并发执行多个 cURL 请求
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
// 关闭所有句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
上述示例中,我们首先使用 curl_multi_init()
函数创建了一个 curl 多个句柄资源 $mh。然后使用 curl_init()
函数创建了两个 cURL 句柄资源 $ch1 和 $ch2,分别用于发送两个不同的 API 请求。接着使用 curl_multi_add_handle()
函数将这两个 cURL 句柄添加到 curl 多个句柄中。最后,通过循环调用 curl_multi_exec()
函数来并发执行这两个请求,直到所有请求都完成。最后,使用 curl_multi_remove_handle()
函数将句柄从多个句柄中移除,并调用 curl_multi_close()
函数关闭多个句柄。
请注意,在使用 curl_multi_add_handle()
函数之后,需要使用 curl_multi_exec()
函数来实际发送请求。而在 curl_multi_remove_handle()
函数之前,必须等待所有请求完成,可以通过检查 curl_multi_exec()
函数的返回值来判断是否还有请求正在进行。