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

StackOverflow https://stackoverflow.com/questions/274286

Вопрос

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

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

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

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

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

Спасибо.

Это было полезно?

Решение 2

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

gethostbyname('example.com')

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top