Php - Подключение к удаленной базе данных очень медленное
-
07-07-2019 - |
Вопрос
У меня есть новый 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 из командной строки и посмотрите, работает ли он лучше без задействования уровня веб-сервера.