在PHP关闭数据库连接的应用(Use of closing database connection

2019-07-31 12:00发布

我总是在假设,它始终是一个很好的做法,关闭数据库连接,无论数据库/ ORM的,像mysql_close(),行走:: close()方法等。

参考我的其他的一个问题 ,并在互联网上其他一些研究,我认识了一个令人惊讶的面孔,大多数人建议,如果你的连接紧密连接始终被请求后关闭并不重要。

但是我发现这些问题的答案有点难以消化。 理由是,为什么所有DB LIB,ORM提供close方法? 如果它是存在的, 在每一个ORM / lib下 ,必须有一些很好的利用它。

可有人请上一些线索在什么情况下,我们应该使用Close方法关闭数据库连接? &如果这些方法都没有作用的,为什么他们在所有DB库/ ORM目前有?

编辑

我的结论

这是Bondye和Fluffeh之间商量好了,它花光了关于使用连接关闭了我的怀疑。 多亏了他们两个。

  • 如果你的脚本预计将持续低于100毫秒,不打扰关闭连接。
  • 但是:如果脚本有望持续时间更长,还有最后DB操作和脚本的密切,为他人自由连接之间的某个时间通过调用* close()方法。

这实在是非常困难的,我接受一个答案既是答案都在它的位置是正确的。 刚接受了所有评论的答案,使其保持领先。 但是+1到两个正确答案。

Answer 1:

使用mysql_close()通常是不必要的,因为非持久打开链接在脚本执行结束时自动关闭。

释放资源

自动检测由于与PHP 4的Zend引擎,与它没有更多的参考资源推出的引用计数系统,它是由垃圾收集器释放。 出于这个原因,很少需要手动释放内存。

希望这可以帮助你。

( 源 )

编辑:

的目的mysql_close()也节省计算机资源,但使用它的另一个重要原因,是因为有一个MySQL服务器可以接受的连接数量有限,如果你有几个客户持有本开放无缘无故的连接,则服务器可能需要转走其他等待的客户端。 当然,这是一件坏事,所以,与mysql_free_result()这是好事,调用mysql_close()如果你认为会有最后一个数据库使用和脚本结束之间的一段时间。



Answer 2:

它始终是很好的做法,关闭数据库连接,当你不再需要它。 即使它被自动关闭脚本结束后 - 这可能是另一个第二或多项分裂秒钟后。 如果你不再需要它,一个用户击中页面,浪费半秒数据库连接不会有所作为-只有二十做一次突然打开连接10秒-这确实有差别。

与此同时,再使用连接可以是一个很好的做法 - 制作和打开连接通常至少需要几毫秒的时间 - 如果你是例如插入几十万行,那几毫秒每次加起来真的快速。

在某种程度上,它是设置变量为NULL或取消设置它没有什么不同。 你不必这样做,但干净优雅的代码和资源管理始终是一件好事。



Answer 3:

数据库连接是没有限制的。 商业数据库软件,特别是,往往有限制并发连接数,以相对较少的许可证。 在这种情况下,你一定要关闭连接时,你的脚本不再积极地使用。 虽然PHP自动执行关闭数据库连接时,脚本终止,它没有这样做,直到访问者已完成下载页面。 如果他的连接速度慢(拨号或移动),这可能需要十年,二秒,你知道所有。



Answer 4:

发达ORM的学说一样,推动善于关闭MySQL连接。 但是,如果你使用的是直PHP,我已经看到了很多的回溯到未闭合的连接数据库的问题。 明智的做法是在每个脚本结束时关闭所有数据库连接。



文章来源: Use of closing database connection in php