函数:curl_multi_exec() 适用版本:PHP 5, PHP 7
用法:该函数用于同时处理多个cURL请求。
resource curl_multi_exec ( resource $mh , int &$still_running )
参数:
$mh
:由 curl_multi_init() 返回的 cURL 多处理句柄。&$still_running
:返回一个整数值,表示还在进行中的请求数量。
返回值:
- 如果出现错误,返回一个 CURLM_* 错误码(例如,CURLE_OUT_OF_MEMORY表示内存不足)。
- 如果执行成功,返回 CURLM_CALL_MULTI_PERFORM。
- 如果所有请求都完成并且没有错误,返回 CURLM_OK。
示例:
$mh = curl_multi_init();
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://example.com/request1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "http://example.com/request2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);
do {
$status = curl_multi_exec($mh, $still_running);
} while ($status === CURLM_CALL_MULTI_PERFORM || $still_running);
// 检查错误
if ($status !== CURLM_OK) {
echo "cURL multi-exec error: " . curl_multi_strerror($status);
}
// 获取请求结果
$result1 = curl_multi_getcontent($ch1);
$result2 = curl_multi_getcontent($ch2);
// 关闭句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
echo "Request 1 result: " . $result1;
echo "Request 2 result: " . $result2;
这个示例展示了如何使用 curl_multi_exec()
来同时处理两个cURL请求。你可以添加更多的cURL句柄到多处理句柄 ($mh
),然后使用循环来执行并检查请求的状态,直到所有请求都完成。最后,你可以使用 curl_multi_getcontent()
函数获取每个请求的结果。请注意,你仍然需要使用 curl_multi_remove_handle()
和 curl_multi_close()
关闭每个请求的句柄。