增加CURL速度php

时间:2015-05-21 08:34:58

标签: php curl

我使用的是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

哪个方面太多了,关于如何减少这个的想法?

2 个答案:

答案 0 :(得分: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)。

除此之外,你无能为力。

答案 1 :(得分:0)

我会看看您是否可以在终端/控制台窗口中确定服务器连接速度。这将极大地影响访问Web上的资源所花费的时间。此外,您可能需要考虑从资源中获取响应时间,因为页面需要获取所请求的信息并将其发回。

我还会考虑在深夜使用cronjob保存所需的信息,这样您就不必提前处理。