Требуется, чтобы моя локальная система около 1 секунды установила соединение MySQLi. Код:
$db = new mysqli( 'localhost', 'root', 'pass', 'mydb' );
Почему это так медленно? Это нормально? Могу ли я его улучшить?
Ответ 1
Переключить "localhost" на 127.0.0.1.
Итак, вместо:
$db = new mysqli( 'localhost', 'root', 'pass', 'mydb');
Использование:
$db = new mysqli( '127.0.0.1', 'root', 'pass', 'mydb');
Увидев, что этот вопрос кажется довольно популярным, и многие люди хотели бы знать ПОЧЕМУ это происходит:
Это вызвано тем, что клиент MySQL сделает IPV6 поиск имени хоста. Если это не сработает (и в этом случае, очевидно, делает), он затем попытается выполнить поиск по IPV4. Между IPV6 (AAAA), а поиск IPV4 (A) преуспевает, что мы получаем это цикл таймаута соединения, который длится около 1-2 секунд.
Стоит отметить, что эта проблема возникает только с Windows 7 и после. Перед Windows 7 разрешение localhost обрабатывалось файлом hosts, который был предварительно настроен с помощью 127.0.0.1