函数名称:curl_multi_init() 适用版本:PHP 5, PHP 7
函数说明: curl_multi_init() 函数用于初始化一个空的 cURL 多个句柄资源。它在使用多个 cURL 请求时非常有用,可以同时发送多个请求并等待它们全部完成。
语法: resource curl_multi_init ( void )
参数说明: 无参数。
返回值: 返回一个新的 cURL 多个句柄的资源。
示例用法: <?php // 创建 cURL 多个句柄资源 $multiHandle = curl_multi_init();
// 添加多个 cURL 句柄到多句柄资源中 $ch1 = curl_init("https://example.com/api1"); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); curl_multi_add_handle($multiHandle, $ch1);
$ch2 = curl_init("https://example.com/api2"); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); curl_multi_add_handle($multiHandle, $ch2);
// 执行多个 cURL 请求 $running = null; do { curl_multi_exec($multiHandle, $running); } while ($running);
// 检查请求结果 $results = []; $successCount = 0;
while ($done = curl_multi_info_read($multiHandle)) { $result = curl_multi_getcontent($done['handle']); $results[] = $result;
if ($done['result'] === CURLE_OK) {
$successCount++;
}
curl_multi_remove_handle($multiHandle, $done['handle']);
}
// 关闭多句柄资源 curl_multi_close($multiHandle);
// 输出结果 echo "Total requests: " . $successCount . "\n"; echo "Response results: \n"; foreach ($results as $i => $result) { echo "Request " . ($i + 1) . ": " . $result . "\n"; } ?> 以上示例代码使用 curl_init() 创建两个 cURL 句柄,并使用 curl_setopt() 设置相关选项。然后,通过 curl_multi_add_handle() 添加句柄到多句柄资源中。接着,使用 curl_multi_exec() 执行多个 cURL 请求,并使用 curl_multi_info_read() 循环获取请求结果。最后,通过 curl_multi_remove_handle() 移除句柄并关闭多句柄资源。最终,输出请求结果。
请注意,此示例仅用于说明 curl_multi_init() 函数的基本用法,实际应用可能需要更复杂的请求处理和错误处理逻辑。