Pdomysql连接关闭 - 未设置与null

问题描述 投票:0回答:3
nove,有些人建议,由于PHP 5.3具有新的GC,因此应使用以下内容:

unset($connection);
我需要一劳永逸地知道哪一个是首选的,还是相同?
    

他们做同样的事情。揭开
$pdo
手柄并将其设置为null都关闭连接。

您可以自己测试。在一个窗口中运行以下脚本,然后在第二个窗口中打开MySQL客户端,然后每隔几秒钟运行连接消失。

SHOW PROCESSLIST
php pdo
3个回答
6
投票
然后更改为

<?php $pdo = new PDO(..); sleep(10); unset($pdo); echo "pdo unset!\n"; sleep(10);

并再次进行测试。

unset($pdo)

the the末端的额外

$pdo=null;

在那里有片刻,以便在PHP脚本终止之前(无论如何都会删除连接)。
    

我偶然发现了这一点。 我有一个跨越设置和拆卸的PDO对象,我找不到剩余参考的位置,因为将$ PDO设置为null无法解决问题。
用户在
http://php.net/manual/en/pdo.connections.php

中贡献了说明,讨论了延迟闭合的问题。 他们在这里建议杀死当前的连接:

$ PDO-> QUERY('select pg_terninate_backend(pg_backend_pid());');
$ pdo = null;
这是给Postgres的。  对于MySQL,我使用过:

$ PDO-> QUERY('kill connection_id();');

                
没有一个人会关闭连接。将其设置为null将将变量的值设置为

<?php $pdo = new PDO(..); sleep(10); $pdo = null; echo "pdo set null!\n"; sleep(10);

2
投票
要销毁对象,在运行脚本中不得再有任何参考。 除非您有很好的理由,否则您真的不应该关闭PDO连接。这就是为什么没有关闭PDO连接的方法的原因。这只是一个非常糟糕的主意。取而代之的是,一旦完成数据库活动,下一个代码就无法访问数据库层,即首先从数据库获取数据,然后使PHP在其上执行昂贵的计算。但是,在大多数情况下,这无关紧要,从脚本执行开始到结束,您可以打开一个PDO连接。

使用 sleep()

But

null

so使用Unset。


0
投票
完全不要打扰关闭。 PHP会为您关闭。

注意,当然,您的应用程序必须经过精心设计,而无需以机枪的速度重新连接到不同的数据库。即使在后一种情况下,您要关闭的方法也是最小问题。你是有史以来最糟糕的树。处理连接的数量,而不是您关闭它们的方式。

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.