English | 简体中文 | 繁體中文
查询

curl_multi_exec()函数—用法及示例

「 同时处理多个cURL请求 」


函数: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() 关闭每个请求的句柄。

补充纠错
上一个函数: curl_multi_errno()函数
下一个函数: curl_multi_getcontent()函数
热门PHP函数
分享链接