我的本地系统需要大约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