PHP get请求多个url取返回内容自动按顺序排列返回内容
以下是一个简单的 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] 的返回内容。
原文地址: http://www.cveoy.top/t/topic/6fK 著作权归作者所有。请勿转载和采集!