提高 CURL 速度 PHP

5
我是使用flipkart.com提供的API,可以搜索并以json格式输出结果。
我正在使用以下代码:
$snapword = $_GET['p'];
$snapword = str_replace(' ','+',$snapword);

$headers = array(
           'Fk-Affiliate-Id: myaffid',
           'Fk-Affiliate-Token: c0f74c4esometokesndad68f50666'
           );
$pattern = "@\(.*?\)@";
$snapword = preg_replace($pattern,'',$snapword);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,  'https://affiliate-api.flipkart.net/affiliate/search/json?query='.$snapword.'&resultCount=5');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_USERAGENT,'php');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$snapdeal = curl_exec($ch);
curl_close($ch);
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Process Time: {$time}";

目前处理时间为:Process Time: 5.3794288635254

这个时间太长了,有什么方法可以缩短处理时间吗?


如果这是你唯一的代码,那么处理时间大部分都被你调用的URL所占用。你的代码中没有其他可能需要5秒钟的东西。 - Hanky Panky
是的!那就是唯一的代码,我后来使用了 json_decode 但它只需要0.0034毫秒。 - IdidntKnewIt
2
那个API很慢,你无能为力。 - Hanky Panky
我指的是任何可以减少时间的压缩类型? - IdidntKnewIt
2
如果API很慢,你无能为力... 你应该联系他们。 - Crembo
显示剩余2条评论
2个回答

1

使用 curl_getinfo() 来获取更准确的信息。它还显示了解析DNS等所花费的时间。

您可以使用以下键查看每个步骤所需的确切时间:

CURLINFO_TOTAL_TIME - Total transaction time in seconds for last transfer
CURLINFO_NAMELOOKUP_TIME - Time in seconds until name resolving was complete
CURLINFO_CONNECT_TIME - Time in seconds it took to establish the connection
CURLINFO_PRETRANSFER_TIME - Time in seconds from start until just before file transfer begins
CURLINFO_STARTTRANSFER_TIME - Time in seconds until the first byte is about to be transferred
CURLINFO_SPEED_DOWNLOAD - Average download speed
CURLINFO_SPEED_UPLOAD - Average upload speed


$info = curl_getinfo($curl);
echo $info['connect_time']; // Same as above, but lower letters without CURLINFO

很可能,API 比较慢。您可以尝试更换更快的 DNS 服务器(在 Linux 中:/etc/resolv.conf)。除此之外,您无法做太多事情。

curl_getinfo() 不是 curl_info()。 - h0mayun

0
我会看一下你是否可以在终端/控制台窗口中确定服务器的连接速度。这将极大地影响访问网络资源所需的时间。此外,您可能还需要考虑从资源获得所需信息并将其发送回来所需的响应时间。
我还建议您考虑在晚上使用 cronjob 保存您需要的尽可能多的信息,以便您无需事先处理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接