是否有必要关闭PDO连接

时间:2013-03-16 01:59:48

标签: php pdo

我注意到PDO没有关闭功能。我应该关闭连接还是不需要PDO?

3 个答案:

答案 0 :(得分:28)

  

成功连接到数据库后,PDO类的实例将返回到您的脚本。该连接在该PDO对象的生命周期内保持活动状态。要关闭连接,您需要通过确保删除对它的所有剩余引用来销毁对象 - 您可以通过为保存对象的变量赋值来执行此操作。如果您没有明确地执行此操作,PHP将在脚本结束时自动关闭连接。

http://php.net/manual/en/pdo.connections.php

所以答案是否定的,除非你因为某种原因需要在脚本执行期间显式关闭连接,否则你不需要做任何事情,在这种情况下只需将你的PDO对象设置为null。

答案 1 :(得分:9)

这个问题取决于项目类型和连接类型。

在我的几乎所有项目中,我从不手动关闭连接。在PHP中,连接(除非它是持久连接)将仅在请求期间打开。因此,手动关闭它无论如何都是无用的。

在查看没有持久连接的项目时,很难知道何时以任何方式手动关闭连接非常。一旦项目变得比一些文件大(并且各个组件都不知道他们应该如何),就很难知道何时仍然需要连接。

在需要时再次打开连接比在请求期间保持打开更加昂贵。

虽然在处理持久连接时会出现一些情况,您可能需要手动关闭连接。

所以回答你的问题:

  

我注意到PDO没有关闭功能。

您可以使对象引用(以及对象的所有引用)无效,以在PHP中手动关闭连接。

  

我应该关闭连接还是不需要PDO?

在大多数情况下,是必要的。

答案 2 :(得分:6)

来自PDO的connection页面

  

成功连接到数据库后,PDO类的实例将返回到您的脚本。该连接在该PDO对象的生命周期内保持活动状态。要关闭连接,您需要通过确保删除对它的所有剩余引用来销毁对象 - 您可以通过为保存对象的变量赋值来执行此操作。

     

如果您没有明确地执行此操作,PHP将在脚本结束时自动关闭连接。


修改

我宁愿使用持久连接。但是,最好在脚本末尾关闭所有连接。