PHP 批量 GET 请求并按顺序返回内容
以下是一个简单的 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() 函数将所有响应内容连接在一起,并按顺序返回。
原文地址: https://www.cveoy.top/t/topic/muXn 著作权归作者所有。请勿转载和采集!