Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的MySQLi连接这么慢?_Php_Mysql - Fatal编程技术网

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

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 查找主机名。如

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

$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