gpt4 book ai didi

php - PDO 连接间歇性缓慢

转载 作者:行者123 更新时间:2023-11-29 17:46:05 25 4
gpt4 key购买 nike

我有以下脚本来连接到数据库:

$db = new PDO("mysql:dbname=dbname;host=127.0.0.1;charset=utf8mb4", 'root', '',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

我正在使用 xampp,间歇性地需要 3 秒以上的时间来加载上述内容(当它不执行上述操作时,它会立即加载)。

我已经使用XDebug验证了是上面的内容,请看下面的截图: Connect 1 Connect 2

在 Google 开发者工具中,TTFB(第一个字节的时间)也与连接到数据库所需的时间相匹配。

我尝试过的事情:

  • 将 http.conf 中的 ServerName 属性设置为 ServerName 127.0.0.1:80
  • 在连接脚本中使用主机 127.0.0.1 而不是 localhost
  • 在 http.conf 中将 HostnameLookups 设置为 Off
  • 在 http.conf 中将监听端口更改为 8080(监听 127.0.0.1:8080),这只是导致它显示 localhost 拒绝连接
  • 在 regedit 中禁用 IPv6
  • 更改了主机文件以包含记录 127.0.0.1 localhost 和 127.0.0.1 127.0.0.1
  • 禁用 XDebug 不会产生任何影响
  • 我安装了 BitDefender 防病毒软件并尝试将其禁用
  • 将skip-name-resolve添加到my.ini
  • 将bind-address="127.0.0.1"添加到my.ini
  • 刷新 DNS 缓存

可能还有其他我忘记的事情。

我使用的是 Google Chrome,但所有浏览器都遇到同样的问题。

如何才能使与数据库的连接始终保持快速,而不是挂起 3 秒以上?

最佳答案

这只是一个建议,而不是解决方案。连接数据库的速度可能会有所不同,具体取决于您使用的硬件。我注意到你在本地运行它。

我不确定你想要多快,但如果你想减少连接速度时间,你应该考虑在后续连接中使用单例模式。

通常它应该类似于以下代码片段:

Class Database
{
protected static $connection = null;

public static function connect ()
{
if (! is_null (self::$connection)) {
return self::$connection;
}

self::$connection = new PDO("mysql:dbname=dbname;host=127.0.0.1;charset=utf8mb4", 'root', '' ", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

return self::$connection;
}
}

Database::connect ()->query ('some random query'); // this will still take 3 sec
Database::connect ()->query ('some random query'); // this will run faster

P.S 这不会避免第一个连接的速度,但感知到连接对于后续连接保持开放状态,它会足够快。在采用单例模式之前,请先阅读它的优缺点。

关于php - PDO 连接间歇性缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49820594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com