curl namelookup_time 10 секунд - PullRequest
       10

curl namelookup_time 10 секунд

5 голосов
/ 03 января 2012

При выполнении базового запроса curl на PHP на простой текстовой веб-странице (http://whatismyip.org/) ответ занимает более 10 секунд.

После просмотра информации из curl это говорит мне, чтоnamelookup_time составляет 10 секунд. Я могу видеть точно такой же результат при выполнении curl из командной строки (Терминал).

Почему поиск имени занимает так много времени, по сравнению с тем, что яЯ читал, что, скорее всего, что-то относится к серверу / моему компьютеру, с которого размещен файл PHP.


Вот мой код:

$ch = curl_init();  
curl_setopt( $ch, CURLOPT_URL, "whatismyip.org");
curl_exec( $ch );

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

Вот информация:

[url] => HTTP://whatismyip.org 
[content_type] => text/plain 
[http_code] => 200 
[header_size] => 45 
[request_size] => 53 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 10.549943 
[namelookup_time] => 10.100938 
[connect_time] => 10.300077 
[pretransfer_time] => 10.300079 
[size_upload] => 0 
[size_download] => 14 
[speed_download] => 1 
[speed_upload] => 0 
[download_content_length] => -1 
[upload_content_length] => 0 
[starttransfer_time] => 10.549919 
[redirect_time] => 0 
[certinfo] => Array ( )

Ответы [ 3 ]

8 голосов
/ 05 сентября 2014
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

Решил проблему для меня. IPV6 получил неясную ошибку.

3 голосов
/ 03 января 2012

Я не могу повторить это, используя точно код выше - namelookup_time на моем (Windows) компьютере возвращается как 0, с total_time, равным ~ 0.5.namelookup_time - это время, которое ОС потратила на разрешение DNS-имени для whatismyip.org, поэтому вам нужно проверить конфигурацию DNS вашего сервера.

Предположительно, настроенный основной DNS-сервер не существует /не работает, и время ожидания составляет 10 секунд.Это означает, что ОС будет ждать 10 секунд, пытаясь связаться с первичным DNS, и когда этот тайм-аут переходит на вторичный, который работает.

Каковы ваши настроенные DNS-серверы?Попробуйте использовать 8.8.8.8 (Google) в качестве основного DNS, если это необходимо.

В качестве примечания, лучше всего указать полный URL для cURL, поэтому вместо него используйте http://whatismyip.org/из всего whatismyip.org - хотя это, похоже, не является причиной этой конкретной проблемы.

2 голосов
/ 03 января 2012

Возможно, один из ваших DNS-серверов не отвечает своевременно.Попробуйте эту команду для всех IP-адресов, перечисленных в /etc/resolv.conf:

dig @IP.TO.DNS.SERVER google.com

Если я прав, один из ваших DNS-серверов не отвечает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...