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

时间:2012-11-18 11:48:02

标签: php mysql

我的本​​地系统需要大约1秒才能建立MySQLi连接。代码:

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

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

3 个答案:

答案 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)

作为suggested by Tony

  

我编辑了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。