- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
情况:
当 3 个类的方法需要 db 访问时,它们各自在内部创建 PDO 对象,利用它们扩展的 dbwrapper。每个对象都将其 PDO 对象存储在一个成员/字段中,以供自身引用。
问题:我的问题是……每个对象是否都创建了一个单独的数据库连接,总共有 3 个? Apache 的每个客户端是只创建一个到数据库的连接,还是每个在 php 应用程序中使用数据库的对象都创建一个连接。 (听起来效率低下!)
原因:我想了解这些连接是如何处理的。
我正在尝试决定是让每个类都扩展 dbwrapper 会更好,还是在不自动连接 db 的情况下初始化 dbwrapper 会更好,在需要时处理它。相反,我会在每个对象初始化时将 dbwrapper 传递给它们的构造函数……让它们使用该引用。如果发生多个数据库连接,那么我认为这将是在克服对象范围和访问问题的同时最大限度地减少开销的最佳方法。
提前致谢!
最佳答案
is each object creating a separate connection to the database, making 3 in total?
也许吧。我不知道,但这是找出答案的方法。当您的脚本正在运行时,通过您选择的客户端(如命令行)连接到 MySQL 并发出命令 SHOW PROCESSLIST;
您将获得一个事件连接列表。
您可能需要在脚本中插入一个sleep
,以使其保持足够长的时间,以便在实例化并处理所有三个对象时运行进程列表命令。
您会看到一个或三个连接。然后你就会得到答案。
(答案将因底层驱动程序而异。如果 DSN 相同,某些驱动程序将重用连接。)
Instead I would pass the dbwrapper to each objects constructor as they are initialized... letting them use that reference
这是常见的做法。数据库句柄是 Singleton 的主要候选对象模式也是如此。
关于PHP PDO : Multiple objects extend dbwrapper; How many MySQL connections?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532986/
我是一名优秀的程序员,十分优秀!