使用 PHP 什么会更快:多个数据库连接 class 实例还是单例?

With PHP what would be faster: multiple DB connection class instances or a singleton?

我正在开展一个新的 PHP 项目,该项目需要记录 class 来更新数据库。目前,每个需要这样做的对象或脚本都会创建一个对象的新实例。理论上,这可能意味着每次调用多达六到七个实例。

目前的设计要求对象在构造方法中连接到数据库,这意味着 0 到 7 个连接?

对于演示,我将仅使用 MySQL,但由于它全部隐藏在单个界面后面,因此可以想象它可以很容易地移植到其他数据存储(并且可能会)。

考虑到项目的性质,响应速度是关键的优化点,但是有这么多连接,我是否 运行 有在需求高时系统过载的风险,因此无论如何都会减慢速度?

在这种情况下,使用单例会更好(总体上更快)吗?

或者有什么方法可以让我的蛋糕吃掉吗?

与数据库服务器的连接需要时间来连接并且会消耗内存。数据库服务器同时接受的连接数也是有限的。这就是连接数应尽可能少的原因,这意味着只应使用到同一数据库的单个连接。

仅使用一个连接并不意味着您必须使用 Singleton 模式。只需在脚本开头的某处创建连接对象并将其传递给将执行数据库查询的组件。

我可以向您推荐两种解决方案:

  1. 如果可以,请使用存储过程,它将减少 Mysql 个连接数,它更安全,并且它被缓存。

  2. 第一次使用Mysql连接,然后将数据保存到Redis或Memcached。

它旨在满足您的查询和需求。

谢谢

this solution。它对每个连接使用单例方法并处理跨多个适配器的多个连接(例如 mysql、memcached 等)