Kap*_*rma 7 php propel doctrine symfony1 database-connection
我总是假设关闭数据库连接始终是一个好习惯,无论数据库/ ORM如何,如mysql_close(),Propel :: close()等.
参考我的其他的一个问题,并在互联网上其他一些研究,我认识了一个令人惊讶的面孔,大多数人建议,如果你的连接紧密连接始终被请求后关闭并不重要.
但是我发现这些答案很难消化.原因是,为什么所有DB lib,ORM都提供close方法?如果它存在,在每个ORM/lib中,必须有一些很好的使用它.
有人可以说明在什么情况下,我们应该用close方法关闭数据库连接?如果这些方法根本没用,为什么它们存在于所有db libs/ORM中?
编辑
我的结论
这是Bondye和Fluffeh之间的一次很好的讨论,它清除了我对使用连接关闭的疑虑.感谢他们两个.
我真的很难接受一个答案,因为答案都是正确的.只需接受所有评论的回答,以便保持最佳状态.但+1正确答案.
使用mysql_close()通常是不必要的,因为非持久打开链接在脚本执行结束时自动关闭.
释放资源
由于PHP 4的Zend引擎引入了引用计数系统,因此不会自动检测到没有更多引用的资源,并且它被垃圾收集器释放.因此,很少需要手动释放内存.
希望这对你有所帮助.
(来源)
编辑:
目的mysql_close()也是为了节省计算机资源,但使用它的另一个关键原因是MySQL服务器可以接受的连接数量有限,如果有几个客户端无缘无故地打开连接,那么服务器很可能需要拒绝其他等待的客户.当然这是一件坏事,因此,如果您认为在上一次使用数据库和脚本结束之间会有一段时间mysql_free_result(),那么调用是很好的mysql_close().
在不再需要数据库连接时关闭数据库连接始终是一种好习惯.即使它在脚本结束后自动关闭 - 可能是另一秒或一段时间后分秒.如果你不再需要它,一个用户击中页面,浪费半秒数据库连接不会有所作为-只有二十做一次突然打开连接10秒-这确实有所作为.
同时,重新使用连接可能是一个很好的做法 - 制作和打开连接通常需要至少几毫秒 - 如果你是插入几十万行,那么每次几毫秒真的加起来快速.
在某种程度上,将变量设置为NULL或取消设置也没有什么不同.你不具备做,但干净优雅的代码和资源管理是总是一件好事.
| 归档时间: |
|
| 查看次数: |
5184 次 |
| 最近记录: |