php – 复制PDO对象是否会创建多个连接?
我有一个关于使用PDO的问题,我无法找到答案.对于mysql / mysqli连接,这可能也是一样的. 在我的项目的主要包括中,我使用创建一个PDO对象
好吧,我有一个需要访问数据库的类.所以,而不是使用“全球$pdo;”在每个功能的内部,我做了以下.
无论如何,我的问题是,这样做是否创建了2个与数据库的连接,因为我通过设置类’$db var等于它来实际复制$pdo?我问的主要原因是因为我发现在我们的系统中发生了很多这种情况,我担心与MysqL建立太多连接并因为不必要的连接而导致系统崩溃. 作为第二部分,以下是否导致重复,我可以通过ref?我有点害怕尝试它并导致某些事情破裂. 更改
至
谢谢! 解决方法: 正如评论中的deceze所提到的,你实际上并没有在这段代码中复制PDO对象,你只需要分配一个额外的变量来引用同一个对象. This answer详细解释,但总而言之,对象具有额外的间接级别 – 即使您没有通过引用传递,您仍然只是复制指向对象的指针,而不是对象本身. 只有在您真正想要修改变量并将修改传播回来时,才需要通过引用传递;在函数内部为$pdo分配一个全新的对象将被视为修改变量,但操纵该对象则不会. 反直觉地,通过引用分配通常会对性能造成更糟糕的影响,因为它会破坏PHP引擎中的“写入时复制”优化,这使得具有相同值的单独变量共享相同的内存. (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |