2015-05-21 6 views
5

Я использую API, предоставляемый flipkart.com, это позволяет мне искать и получать результаты как json.Увеличение скорости CURL php

код я использую:

$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

Что слишком много, какие-либо идеи о том, как уменьшить это?

+0

Если это единственный код, который у вас есть, тогда время обработки в основном выполняется по URL-адресу, который вы вызываете. В вашем коде нет ничего другого, что может занять 5 секунд –

+0

Yupp! это единственный код, я позже делаю 'json_decode', но он просто принимает 0,0034 MS – IdidntKnewIt

+2

. Тогда, что api медленный, вы ничего не можете с этим сделать –

ответ

0

Я бы посмотрел, сможете ли вы определить скорость соединения ваших серверов в окне терминала/консоли. Это значительно повлияло бы на время, необходимое для доступа к ресурсу в Интернете. Кроме того, вы можете подумать о времени ответа, которое требуется от ресурса, поскольку страница должна получить запрошенную информацию и отправить ее обратно.

Я также хотел бы сэкономить столько информации, что вам нужно, используя cronjob поздно ночью, чтобы вам не пришлось обрабатывать этот аванс.

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).

Кроме этого, вы не можете многое сделать.

+0

curl_getinfo() NOT curl_info() – h0mayun

Смежные вопросы