Php - очень медленное подключение к удаленной базе данных

У меня есть новый сервер VPS, и я пытаюсь подключить его к другому серверу того же провайдера. Когда я подключаюсь через инструмент командной строки mysql, соединение очень быстрое.

Когда я использую PHP для подключения к удаленной БД, время подключения может занять до 5 секунд. Запросы после этого выполняются быстро.

Это не ограничивается mysql, использование file_get_contents() для загрузки файла практически с любого другого сервера дает такое же отставание. Использование wget для получения файла не имеет этой задержки.

Я синхронизировал DNS-запросы из PHP, используя dns_get_record(), и они были быстрыми (1-2 миллисекунды).

Любые мысли о том, что в конфигурации php может быть причиной этого?

Спасибо.


person Jay    schedule 08.11.2008    source источник


Ответы (2)


Я бы проверил, в каком режиме работает PHP, по какой-то причине он запускает скрипты как CGI. По сути, PHP сам по себе очень медленный, и это заметно только при выполнении удаленных операций.

Проверьте конфигурацию веб-сервера. Также, если это вариант, попробуйте PHP из командной строки и посмотрите, работает ли он лучше без участия уровня веб-сервера.

person acrosman    schedule 08.11.2008

В итоге я обновился с PHP 5.1.6 до PHP 5.2.6, и проблема исчезла. Это определенно была проблема с поиском DNS в PHP, выполнение следующего кода заняло бы около 5 секунд:

gethostbyname('example.com')

У меня есть ощущение, что IPV6 был проблемой (в основном это догадка, прочитанная об этом в Интернете), но у меня нет никаких доказательств.

person Jay    schedule 08.11.2008