以下是一个简单的 PHP 代码示例,可以使用多个 URL 发送 GET 请求,并根据它们返回的顺序按顺序将响应内容组合在一起。

$urls = array(
    'http://example.com/page1',
    'http://example.com/page2',
    'http://example.com/page3'
);

$results = array();

// 使用 cURL 发送 GET 请求
$curl_handles = array();
foreach ($urls as $url) {
    $curl_handles[$url] = curl_init();
    curl_setopt($curl_handles[$url], CURLOPT_URL, $url);
    curl_setopt($curl_handles[$url], CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_handles[$url], CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl_handles[$url], CURLOPT_MAXREDIRS, 10);
    curl_setopt($curl_handles[$url], CURLOPT_TIMEOUT, 30);
    curl_setopt($curl_handles[$url], CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($curl_handles[$url], CURLOPT_HEADER, false);
    curl_setopt($curl_handles[$url], CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl_handles[$url], CURLOPT_SSL_VERIFYPEER, false);
    curl_multi_add_handle($multi_handle, $curl_handles[$url]);
}

// 执行 cURL 请求
$active = null;
do {
    $mrc = curl_multi_exec($multi_handle, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($multi_handle) == -1) {
        usleep(100);
    }

    do {
        $mrc = curl_multi_exec($multi_handle, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
}

// 获取响应内容并关闭 cURL 句柄
foreach ($urls as $url) {
    $result = curl_multi_getcontent($curl_handles[$url]);
    $results[] = $result;
    curl_multi_remove_handle($multi_handle, $curl_handles[$url]);
    curl_close($curl_handles[$url]);
}

// 按顺序返回响应内容
echo implode("\n", $results);
?>

这个代码片段使用 cURL 执行多个并发 GET 请求,并将每个响应的内容存储在 $results 数组中。最后,它将使用 implode() 函数将所有响应内容连接在一起,并按顺序返回。
PHP 批量 GET 请求并按顺序返回内容

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

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