Php 为什么我的MySQLi连接这么慢?
我的本地系统建立MySQLi连接大约需要1秒的时间。代码:Php 为什么我的MySQLi连接这么慢?,php,mysql,Php,Mysql,我的本地系统建立MySQLi连接大约需要1秒的时间。代码: $db = new mysqli( 'localhost', 'root', 'pass', 'mydb' ); 为什么这么慢?这正常吗?我可以改进它吗?将“localhost”切换到127.0.0.1 因此,不是: $db = new mysqli( 'localhost', 'root', 'pass', 'mydb'); 使用: 鉴于这个问题似乎很受欢迎,很多人都想知道: 这是因为MySQL客户端将执行IPV6 查找主机名。如
$db = new mysqli( 'localhost', 'root', 'pass', 'mydb' );
为什么这么慢?这正常吗?我可以改进它吗?将“localhost”切换到127.0.0.1
因此,不是:
$db = new mysqli( 'localhost', 'root', 'pass', 'mydb');
使用:
鉴于这个问题似乎很受欢迎,很多人都想知道:
这是因为MySQL客户端将执行IPV6
查找主机名。如果失败了(在这种情况下,很明显
,然后它将尝试执行IPV4查找。IPV6之间
(AAAA)查找失败,IPV4(A)查找成功,我们得到了什么
是一个持续约1-2秒的连接超时周期
值得注意的是,这个问题似乎只发生在Windows7及以后。在Windows 7之前,本地主机解析由hosts文件处理,该文件预先配置为127.0.0.1
:
我编辑了Mysql my.ini,将Mysql服务更改为仅绑定到
IPV4环回适配器
[mysqld]
...
bind=127.0.0.1
另一个选项是编辑主机文件,该文件位于windows\system32\drivers\etc下
# localhost name resolution is handled within DNS itself.
127.0.0.1 localhost
# ::1 localhost
使用具有管理员权限的编辑器取消注释127.0.0.1。您能告诉我们有关您的系统的更多信息吗?例如,您使用的是什么操作系统..您是否将vm ware用于本地服务器?如果您使用的是windows,请尝试使用
127.0.0.1
而不是localhost.same-但为什么?那真是太离谱了@rmirabelle的意思是,它与mysqli如何处理本地主机和IPv6有关。这是一个更好的答案,因为解决问题的根本原因比使用与本地主机等效的IP更可取。每台机器都应该知道localhost是它自己。
# localhost name resolution is handled within DNS itself.
127.0.0.1 localhost
# ::1 localhost