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

1949idc 2年前 (2024-09-18) 阅读数 312 #编程语言

在 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 资源。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业