PHP异步GET请求是指在不阻塞当前脚本执行的情况下,向另一个服务器发送GET请求并获取响应。这种技术常用于提高应用程序的性能和响应速度,特别是在需要同时处理多个网络请求的场景中。
<?php
function asyncCurl($urls) {
$mh = curl_multi_init();
$ch = [];
foreach ($urls as $i => $url) {
$ch[$i] = curl_init();
curl_setopt($ch[$i], CURLOPT_URL, $url);
curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch[$i], CURLOPT_TIMEOUT, 1);
curl_setopt($ch[$i], CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch[$i], CURLOPT_HEADER, 0);
curl_multi_add_handle($mh, $ch[$i]);
}
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
$results = [];
foreach ($ch as $i => $handle) {
$results[$i] = curl_multi_getcontent($handle);
curl_multi_remove_handle($mh, $handle);
curl_close($handle);
}
curl_multi_close($mh);
return $results;
}
$urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3'
];
$results = asyncCurl($urls);
print_r($results);
?>
curl_error()
函数来获取错误信息,并根据错误信息进行调试。CURLOPT_TIMEOUT
选项来调整请求的超时时间。通过以上方法,可以有效地实现PHP异步GET请求,并解决常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云