有没有一种方法可以异步调用外部API而不会减慢整个网站的速度


Is there a way to async call external API without slowing down the entire website?

我有一个电子商务,我在页面结尾加载易趣API,其中包含与主产品相关的物品。

但我注意到,该请求使整个页面加载速度减慢了4到10秒。

我宁愿先加载页面,然后用加载器在页面中创建一个模块,这样当用户向下滚动时,易趣上的物品就已经加载了。我知道我可以在JavaScript中尝试这个,但在编码之前,我想知道PHP是否可以处理异步请求。

我目前正在使用CURL。这是我的代码:

$q = 'iphone'
$api     = 'https://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsAdvanced&SERVICE-VERSION=1.0.0&SECURITY-APPNAME=remoteco-effectsb-PRD-a38ccaf50-f6906249&RESPONSE-DATA-FORMAT=JSON&REST-PAYLOAD&keywords=';
$url     = $api . $q;
$ch      = curl_init();
$timeout = 1;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$output  = curl_exec($ch);
curl_close($ch);
$array   = (array) json_decode($output);

PHP完成页面渲染后,您将无法从同一脚本接收到其他数据。

您可以启动后台任务,但无法收到相同请求的结果。

最好的选择是将获取相关项目的代码移动到另一个PHP脚本中,并用Javascript调用它。

也就是说,有一些方法可以发送分块回复,但可能不是你的最佳选择。