Почему мое соединение MySQLi так медленно?

Требуется, чтобы моя локальная система около 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

Ответ 2

Как предложенный Тони:

Я отредактировал Mysql my.ini, чтобы изменить службу mysql только для привязки к адаптер петли IPV4.

[mysqld]
...
bind=127.0.0.1

Ответ 3

Другой вариант - отредактировать файл hosts, найденный под windows\system32\drivers\etc

# localhost name resolution is handled within DNS itself.
    127.0.0.1       localhost
#   ::1             localhost

Используйте редактор с правами администратора, чтобы раскомментировать 127.0.0.1.