以下是一个示例代码,可以实现获取多个 URL 的内容并按照顺序返回:

function get_contents($urls) {
    $result = array();
    // 初始化 curl
    $mh = curl_multi_init();
    foreach ($urls as $i => $url) {
        $ch[$i] = curl_init($url);
        curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch[$i], CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch[$i], CURLOPT_CONNECTTIMEOUT, 10);
        curl_multi_add_handle($mh, $ch[$i]);
    }
    // 执行 curl 并等待所有请求完成
    $running = null;
    do {
        curl_multi_exec($mh, $running);
    } while ($running);
    // 获取结果并关闭 curl
    foreach ($urls as $i => $url) {
        $result[$i] = curl_multi_getcontent($ch[$i]);
        curl_multi_remove_handle($mh, $ch[$i]);
        curl_close($ch[$i]);
    }
    curl_multi_close($mh);
    // 按顺序返回结果
    ksort($result);
    return implode("\n", $result);
}

$urls = array(
    'http://example.com/1',
    'http://example.com/2',
    'http://example.com/3',
);
echo get_contents($urls);

该函数接受一个 URL 数组作为参数,并返回一个字符串,其中包含获取的所有 URL 的内容。在函数内部,我们使用 curl_multi_initcurl_multi_add_handle 来初始化和添加多个 curl 句柄,然后使用 curl_multi_exec 并等待所有请求完成。最后,我们使用 curl_multi_getcontentcurl_close 来获取和关闭每个 curl 句柄,并使用 ksort 对结果进行排序,以确保返回的内容按顺序排列。

PHP 获取多个 URL 内容并按顺序返回 - 使用 Curl 多线程

原文地址: https://www.cveoy.top/t/topic/muXf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录