【问题标题】:Reusing a PDO connection after execute?执行后重用 PDO 连接?
【发布时间】:2016-06-08 23:13:53
【问题描述】:

我想知道多次重复使用 PDO 数据库连接是否正确?

例如,我在我的控制器中设置它,然后将它作为参数传递给类的构造函数,调用相同的连接(通过使用 get_Database 之类的函数)是否正确,尽管我在类中的所有函数和甚至将它作为参数传递给另一个类构造以继续使用相同的连接?

或者我应该在某个时候重新打开连接?

我可以通过简单地传递它来让它工作,但是我不太确定它在上线时是否会表现良好。

【问题讨论】:

  • 它不仅可以推荐。建立连接是一个相对缓慢的过程。始终在单个脚本中重用连接

标签: php oop object pdo database-connection


【解决方案1】:

是的,您应该重复使用该连接。

或者我应该在某个时候重新打开连接?

打开新连接的唯一原因是连接到另一个数据库。否则,在单个脚本中只应使用一个连接。

要实现这一点,重要的是要尽量避免在整个应用程序中使用静态单例,而是了解dependency injection 来设计代码以将相同的 PDO 实例共享给需要它的每个函数或类。

但是我不太确定这在上线时是否会表现良好。

作为commented,如果你经常重新打开一个连接,它会慢很多


那里有很多依赖注入器,这几乎可以肯定是见仁见智,但我喜欢Auryn。了解它应该可以帮助您设计更容易共享单个 PDO 实例的代码。

【讨论】:

  • 为什么避免对 PDO 使用单例很重要?
【解决方案2】:

是的,这样可以,而且比多次连接数据库要好。 documentation 甚至建议在对 php 脚本/应用程序的调用之间使用打开的连接:

许多 Web 应用程序都将从与数据库服务器建立持久连接中受益。持久连接不会在脚本结束时关闭,但会在另一个脚本使用相同凭据请求连接时被缓存并重新使用。持久连接缓存允许您避免每次脚本需要与数据库通信时建立新连接的开销,从而提高 Web 应用程序的速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2013-08-10
    • 2018-03-03
    • 2020-03-28
    • 2011-07-22
    • 2017-06-20
    相关资源
    最近更新 更多