我有一个电子商务,我在页面结尾加载易趣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调用它。
也就是说,有一些方法可以发送分块回复,但可能不是你的最佳选择。