11

ローカルシステムがMySQLi接続を確立するのに約1秒かかります。コード:

$db = new mysqli( 'localhost', 'root', 'pass', 'mydb' );

なんでこんなに遅いの?これは正常ですか?改善できますか?

4

3 に答える 3

40

「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秒続く接続タイムアウトサイクルが発生します。

この問題はWindows7以降でのみ発生するようです。Windows 7より前は、ローカルホストの解決は、次のように事前構成されたhostsファイルによって処理されていました。127.0.0.1

于 2012-11-18T11:55:18.123 に答える
3

トニーによって提案されたように:

Mysql my.iniを編集して、IPv4ループバックアダプターにのみバインドするようにmysqlサービスを変更しました。

[mysqld]
...
bind=127.0.0.1
于 2012-11-18T11:55:41.527 に答える
1

もう1つのオプションは、windows \ system32 \ drivers\etcの下にあるhostsファイルを編集することです。

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

管理者権限を持つエディターを使用して、127.0.0.1のコメントを解除します。

于 2015-04-03T18:53:58.833 に答える