unset($connection);
我需要一劳永逸地知道哪一个是首选的,还是相同?
他们做同样的事情。揭开
$pdo
手柄并将其设置为null都关闭连接。
您可以自己测试。在一个窗口中运行以下脚本,然后在第二个窗口中打开MySQL客户端,然后每隔几秒钟运行连接消失。
SHOW PROCESSLIST
<?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);
注意,当然,您的应用程序必须经过精心设计,而无需以机枪的速度重新连接到不同的数据库。即使在后一种情况下,您要关闭的方法也是最小问题。你是有史以来最糟糕的树。处理连接的数量,而不是您关闭它们的方式。