以下是一个简单的 PHP 函数,可以使用 cURL 执行多个 HTTP GET 请求,并将返回内容按顺序排列:

function getMultiUrlContent($urls) {
    $chArray = array();
    $mh = curl_multi_init();
    foreach ($urls as $i => $url) {
        $chArray[$i] = curl_init($url);
        curl_setopt($chArray[$i], CURLOPT_RETURNTRANSFER, true);
        curl_setopt($chArray[$i], CURLOPT_FOLLOWLOCATION, true);
        curl_multi_add_handle($mh, $chArray[$i]);
    }
    $active = null;
    do {
        $mrc = curl_multi_exec($mh, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    while ($active && $mrc == CURLM_OK) {
        if (curl_multi_select($mh) == -1) {
            usleep(100);
        }
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
    $contentArray = array();
    foreach ($urls as $i => $url) {
        $contentArray[$i] = curl_multi_getcontent($chArray[$i]);
        curl_multi_remove_handle($mh, $chArray[$i]);
        curl_close($chArray[$i]);
    }
    curl_multi_close($mh);
    return $contentArray;
}

使用方法:

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

最终返回的 $contentArray 数组中,每个元素的顺序与 $urls 数组中的顺序一一对应,即 $contentArray[0] 对应 $urls[0] 的返回内容。

PHP get请求多个url取返回内容自动按顺序排列返回内容

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

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