PHP PDO:多个对象扩展dbwrapper;有多少MySQL连接?

情况: 我使用db类作为包装器(dbwrapper)来通过PHP PDO打开和关闭数据库连接 我有3个单独的类来扩展这个db包装器 我从所述类中实例化3个对象,并且在它们存在的过程中,它们每个都进行数据库查询 MySQL在这种情况下使用。 当3个类的方法需要db访问时,它们每个都在内部创建PDO对象,利用它们扩展的dbwrapper。每个对象将其PDO对象存储在成员/字段中以供其自身参考。 问题:我的问题是这个...是每个对象创建一个单独的数据库连接,共计3个? Apache的每个客户端是否只创建一个与数据库的连接,或者每个对象在php应用程序中使用db创建连接。 (听起来效率低!) 原因:我想了解这些连接是如何处理的。 我试图决定让每个类扩展dbwrapper是否更好,或者如果没有自动连接db,初始化dbwrapper会更好,在需要时处理它。相反,我会在初始化时将dbwrapper传递给每个对象构造函数...让他们使用该引用。如果发生多个数据库连接,那么我认为这是在克服对象范围和访问问题时最小化开销的最佳方法。 提前致谢!     
已邀请:
  是每个对象创建一个单独的数据库连接,总共3个? 也许。我不知道,但这里是如何找出来的。当您的脚本运行时,通过您选择的客户端(如命令行)连接到MySQL并发出命令
SHOW PROCESSLIST;
您将获得活动连接列表。 您可能需要在脚本中插入
sleep
以使其保持足够长的时间,以便在实例化并运行所有三个对象时运行进程列表命令。 你会看到一个或三个连接。然后你会得到答案。 (答案取决于底层驱动程序。如果DSN相同,某些驱动程序将重用连接。)   相反,我会在初始化时将dbwrapper传递给每个对象构造函数...让他们使用该引用 这是常见的做法。数据库句柄也是Singleton模式的主要候选者。     

要回复问题请先登录注册