有没有办法在不降低整个网站速度的情况下异步调用外部API?

时间:2016-07-30 14:20:20

标签: javascript php ajax curl

我有一个电子商务,我在页面的末尾加载了与主要产品相关的项目的eBay API。

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

我宁愿加载页面,然后在页面中加载一个模块,所以当用户向下滚动时,eBay项目就会被加载。我知道我可以在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);

1 个答案:

答案 0 :(得分:1)

PHP完成呈现页面后,您无法从同一个脚本接收其他数据。

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

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

那说send chunked responses有办法,但可能不适合你。