为啥在 PHP 中建立与 MySQL 的连接大约需要 2 秒?

Posted

技术标签:

【中文标题】为啥在 PHP 中建立与 MySQL 的连接大约需要 2 秒?【英文标题】:Why does making a connection to MySQL take about 2 seconds in PHP?为什么在 PHP 中建立与 MySQL 的连接大约需要 2 秒? 【发布时间】:2013-10-04 22:33:03 【问题描述】:

我的代码是:

$start = time();
$sqli = new mysqli("localhost", "root", "mySelectedPass", "mydb");       
echo time() - $start;

结果:2。

有什么问题?

我正在使用 XAMPP 1.8.1 和 Windows 8。

Ans: 使用 127.0.0.1 而不是 localhost :)

【问题讨论】:

你是如何测量 SQL 请求时间的?你确定你只测量 MySQL 执行时间而不是其他 php/框架开销吗? 感谢您的回答。我使用 firebug-> 网络选项卡。我跑的洞码和问题码一样。 尝试仅测量 query 函数的执行情况。将microtime() 保存到变量之前和之后的另一个变量中,并打印两者之间的差异。 尝试使用 PHP 来计时 SQL 执行时间。 echo time() 在您创建连接之前,然后在您的 while 循环之后。 谢谢。我用你的方法来测量时间,通过使用@tadman 的回答,我发现这个时间与建立联系有关,我也更新了问题标题。有什么建议吗? 【参考方案1】:

您正在测试连接到服务器所需的时间运行查询,而在您的 SQL 管理工具中,您只测试查询执行时间。

您可能有一些错误配置,导致连接到数据库服务器的速度非常慢。大多数应用程序应该使用连接池来避免每次请求都必须重新连接到数据库。

【讨论】:

谢谢。我测量了连接时间,需要 2 秒。我必须修改哪些配置? 服务器很可能正在尝试解析您的 IP 地址并失败。这是skip-name-resolve 配置参数。与您的查询相比,连接时间仍然会相当慢,因此请使用persistent connections。 有一个问题我认为与这个问题有关***.com/questions/13584360/…。正如您在链接中描述的那样,我必须修改 C:\Windows\System32\Drivers\etc 中的主机文件,但我无法修改它,因为 Windows 说:此文件已由其他应用程序打开。 我在连接中应用了 p: 方法。问题是我使用 Yii 和活动记录,并且我在主配置文件中更改了连接字符串但是没有任何改变 谢谢@tadman。我做了一些搜索,发现了一些相关的问题。我使用 127.0.0.1 而不是 localhost,它运行得非常快。我接受了你的回答,因为这接近我应用的方法。请编辑它以供其他人使用。

以上是关于为啥在 PHP 中建立与 MySQL 的连接大约需要 2 秒?的主要内容,如果未能解决你的问题,请参考以下文章

为啥要使用连接池?

PHP / MySQL 很慢,不知道为啥?

[风马一族_php]PHP与Mysql建立连接

为啥 PHP docker 容器无法查找 MYSQL 容器的主机名?

为啥wordpress建立数据库连接时出错

BackboneJS - 如何建立与 MySQL 数据库的连接