温馨提示×

PHP中使用curl_init时如何实现并发请求

PHP
小樊
82
2024-09-12 13:51:59
栏目: 编程语言

在 PHP 中,要实现并发请求,可以使用 curl_multi_init() 函数。这个函数允许你同时处理多个 cURL 会话。下面是一个简单的示例,展示了如何使用 curl_multi_init() 实现并发请求:

<?php
// 请求的 URL 列表
$urls = [
    'https://example1.com',
    'https://example2.com',
    'https://example3.com'
];

// 初始化 cURL Multi 资源
$mh = curl_multi_init();

// 初始化 cURL 资源并设置选项
$ch = [];
foreach ($urls as $i => $url) {
    $ch[$i] = curl_init();
    curl_setopt($ch[$i], CURLOPT_URL, $url);
    curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1);

    // 将 cURL 资源加入到 cURL Multi 资源中
    curl_multi_add_handle($mh, $ch[$i]);
}

$active = null;
// 执行处理
do {
    $status = curl_multi_exec($mh, $active);
    $info = curl_multi_info_read($mh);
    if (false !== $info) {
        // 获取请求结果
        $content = curl_multi_getcontent($info['handle']);
        echo "Result: " . $content . PHP_EOL;

        // 移除已完成的 cURL 资源
        curl_multi_remove_handle($mh, $info['handle']);
    }
} while ($active && $status == CURLM_OK);

// 关闭 cURL Multi 资源
curl_multi_close($mh);

// 关闭 cURL 资源
foreach ($ch as $curl) {
    curl_close($curl);
}
?>

这个示例首先创建一个 cURL Multi 资源,然后遍历 URL 列表,为每个 URL 初始化一个 cURL 资源并设置相应的选项。接着,将每个 cURL 资源加入到 cURL Multi 资源中。通过 curl_multi_exec() 函数执行处理,并使用 curl_multi_info_read() 函数读取已完成的请求。最后,获取请求结果并输出,同时关闭 cURL Multi 资源和 cURL 资源。

0