我的本地系统需要大约1秒才能建立MySQLi连接。代码:
$db = new mysqli( 'localhost', 'root', 'pass', 'mydb' );
为什么这么慢?这是正常的吗?我能改进吗?
答案 0 :(得分:36)
将“localhost”切换为127.0.0.1。
所以,而不是:
$db = new mysqli( 'localhost', 'root', 'pass', 'mydb');
使用:
$db = new mysqli( '127.0.0.1', 'root', 'pass', 'mydb');
看到这个问题似乎很受欢迎,很多人都想知道WHY this is happening:
这是因为MySQL客户端将执行IPV6 查找主机名。如果这失败了(在这种情况下,很明显 然后,它将尝试进行IPV4查找。在IPV6之间 (AAAA)查找失败并且IPV4(A)查找成功,我们得到了什么 是连接超时周期,持续约1-2秒。
值得注意的是,这个问题似乎只发生在Windows 7之后。在Windows 7之前,localhost解析由hosts文件处理,该文件预先配置了127.0.0.1
答案 1 :(得分:3)
我编辑了Mysql my.ini,将mysql服务更改为仅绑定到 IPV4环回适配器。
[mysqld] ... bind=127.0.0.1
答案 2 :(得分: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。