2012-05-29 3 views
1

Код работает, но загрузка страницы занимает 10 секунд. Затем добавить curl_getinfo(), и обнаружил, время перенаправлять использовал 90% от общего времени ....php curl - long redirect time in curl_getinfo()

<?php 
// 
$url = "http://www.somesite.com/###"; 

$username = 'username'; 
$password = 'password'; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM); 
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 

$out = curl_exec($ch); 

print "error:" . curl_error($ch) . "<br />"; 
print "output:" . $out . "<br /><br />"; 

$info = curl_getinfo($ch); 
print_r($info); 

curl_close($ch); 

?> 

curl_getinfo() показывает:

Array ( 
[url] => http://www.somesite.com/xxx 
[content_type] => text/xml;charset=UTF-8 
[http_code] => 200 
[header_size] => 2760 
[request_size] => 5576 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 3 
[total_time] => 10.751595 
[namelookup_time] => 2.0E-5 
[connect_time] => 0.001612 
[pretransfer_time] => 0.001613 
[size_upload] => 0 
[size_download] => 24506 
[speed_download] => 2279 
[speed_upload] => 0 
[download_content_length] => 24506 
[upload_content_length] => 0 
[starttransfer_time] => 0.62479 
[redirect_time] => 9.080637 <-------------- 
[certinfo] => Array () 
[redirect_url] => 
) 

См [redirect_time] => 9.080637?

Это занимает 90% от общего времени.

Как его улучшить?

ответ

1

CURLINFO_REDIRECT_TIME передать указатель на двойной получить общее время в секундах, он принял все шаги перенаправления включает в себя поиск имени, подключение pretransfer и передачу до того, как начались окончательная сделка. CURLINFO_REDIRECT_TIME содержит полное время выполнения для нескольких перенаправлений. (Добавлено в 7.9.7)

Я говорю, что, скорее всего, является передача Фасье: ваши «http://www.somesite.com/xxx» только будучи очень медленно (что трудно исправить, если это не ваш сайт), 3 переадресовывает взяв> 3s каждый. Но вы можете проверить, насколько быстро работает поиск dns. & подключается, кажется, хотя и в этих данных.

+0

Спасибо, журнал Wrikken! – Strong

+0

Но когда я непосредственно посещаю сайт http://www.somesite.com/xxx, ему требуется всего менее 1 секунды !!! – Strong

+0

Затем проанализируйте разницу между полным запросом в браузере и в curl-сессии (полные заголовки запросов и тела, полные заголовки ответов и тела), переверните их, пока они не будут такими же, как вы можете их получить. Логика диктует, что сейчас есть какая-то разница. Я думал о связях keep-alive, но завиток использует их по умолчанию ... – Wrikken