curl_multi_init()
初始化一个空的 cURL 多个句柄资源
函数名称: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() 函数的基本用法,实际应用可能需要更复杂的请求处理和错误处理逻辑。