我正在尝试写一些带有多个类的代码,这些类稍后会有很多数据库连接/查询。
我的问题是,PDO是否在执行以下行后立即连接到数据库,并且它将一直保持连接,直到它关闭?
$pdo = new PDO($dsn, $user, $pass, $options);
或者等待,直到我们执行以下操作进行连接,例如:
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([$email]);
$user = $stmt->fetch();
// Closing connection
$stmt = null;
如果我们做new PDO()
时它没有立即连接,那么我可以很容易地使$pdo
变量成为全局变量,并在每个类中使用它,否则我必须使用__construct()
方法在每个类中单独连接,然后关闭__destruct()
方法上的连接。(我仍然不确定这是否是获得更好性能的最佳方式)
附注:我们还需要设置$pdo = null
来关闭连接吗?或者$stmt = null
就足够了?
发布于 2019-04-08 08:27:17
当您实例化new PDO()
时,它将尝试持久化到数据库的连接。
通过创建
基类的实例来建立PDO连接。
除非你的代码库相对较小,否则我会建议使用avoid using global variables。您将在不应共享的位置共享数据库实例!
也许我们可以生成一个单例类来获取数据库连接。这样我们就可以获得连接的单个实例,并在数据库工作完成后,在关闭连接之前完成所需的所有工作。
尽早关闭数据库连接会很好。但是,PHP会在脚本执行完毕后为您执行此操作。
如果您没有显式地这样做,
将在您的脚本结束时自动关闭连接。
我希望这能帮到你!
https://stackoverflow.com/questions/55564554
复制相似问题