php – 复制PDO对象是否会创建多个连接?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 复制PDO对象是否会创建多个连接?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1321字,纯文字阅读大概需要2分钟。
内容图文
![php – 复制PDO对象是否会创建多个连接?](/upload/InfoBanner/zyjiaocheng/785/0d12ad4d44e0465ca10c003c775d9073.jpg)
我有一个关于使用PDO的问题,我无法找到答案.对于mysql / mysqli连接,这可能也是一样的.
在我的项目的主要包括中,我使用创建一个PDO对象
$pdo = new PDO('connection here');
好吧,我有一个需要访问数据库的类.所以,而不是使用“全球$pdo;”在每个功能的内部,我做了以下.
class MyClass(){
private $db = null;
__construct(){
global $pdo;
$this->db = $pdo;
}
function example(){
$sql = 'A Query';
$this->db->prepare($sql);
}
}
无论如何,我的问题是,这样做是否创建了2个与数据库的连接,因为我通过设置类’$db var等于它来实际复制$pdo?我问的主要原因是因为我发现在我们的系统中发生了很多这种情况,我担心与MySQL建立太多连接并因为不必要的连接而导致系统崩溃.
作为第二部分,以下是否导致重复,我可以通过ref?我有点害怕尝试它并导致某些事情破裂.
更改
function MyFunction($member_id, $pdo){
//do something.
}
至
function MyFunction($member_id, &$pdo){
//do something
}
谢谢!
解决方法:
正如评论中的deceze所提到的,你实际上并没有在这段代码中复制PDO对象,你只需要分配一个额外的变量来引用同一个对象.
This answer详细解释,但总而言之,对象具有额外的间接级别 – 即使您没有通过引用传递,您仍然只是复制指向对象的指针,而不是对象本身.
只有在您真正想要修改变量并将修改传播回来时,才需要通过引用传递;在函数内部为$pdo分配一个全新的对象将被视为修改变量,但操纵该对象则不会.
反直觉地,通过引用分配通常会对性能造成更糟糕的影响,因为它会破坏PHP引擎中的“写入时复制”优化,这使得具有相同值的单独变量共享相同的内存.
内容总结
以上是互联网集市为您收集整理的php – 复制PDO对象是否会创建多个连接?全部内容,希望文章能够帮你解决php – 复制PDO对象是否会创建多个连接?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。