为什么我的MySQLi连接这么慢?

Cra*_*ayl 11 php mysql

我的本地系统需要大约1秒来建立MySQLi连接.码:

$db = new mysqli( 'localhost', 'root', 'pass', 'mydb' );
Run Code Online (Sandbox Code Playgroud)

为什么这么慢?这是正常的吗?我能改进吗?

Way*_*tty 37

将"localhost"切换到127.0.0.1.

所以,而不是:

$db = new mysqli( 'localhost', 'root', 'pass', 'mydb');
Run Code Online (Sandbox Code Playgroud)

使用:

$db = new mysqli( '127.0.0.1', 'root', 'pass', 'mydb');
Run Code Online (Sandbox Code Playgroud)

看来这个问题似乎很受欢迎,很多人都想知道为什么会发生这种情况:

这是因为MySQL客户端将对主机名执行IPV6查找.如果失败(在这种情况下,它显然会失败),它将尝试进行IPV4查找.在IPV6(AAAA)查找失败和IPV4(A)查找成功之间,我们得到的是一个持续约1-2秒的连接超时周期.

值得注意的是,这个问题似乎只发生在Windows 7之后.在Windows 7之前,localhost解析由hosts文件处理,该文件已预先配置127.0.0.1