我在PDO手册中读到,要关闭连接,您应该使用以下命令:

$connection = null;

但是,有人建议,由于PHP5.3有了一个新的GC,应该使用以下内容:
unset($connection);

我需要一劳永逸地知道,哪一个是首选的,还是相同的?

最佳答案

他们做同样的事。取消设置$pdo句柄并将其设置为空都会关闭连接。
你可以自己测试一下。在一个窗口中运行以下脚本,然后在第二个窗口中打开mysql客户端,每隔几秒钟运行一次SHOW PROCESSLIST,查看连接何时消失。

<?php

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

然后将unset($pdo)更改为$pdo=null;并再次运行测试。
<?php

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

最后的额外sleep()让您在php脚本终止之前有一点时间查看连接是否已断开(无论如何这都会断开连接)。

08-04 14:49