我总是假设关闭数据库连接是一个很好的实践,而不管数据库/ORM是什么,比如mysql_close()、Propel:: close ()等等。
关于我的另一个问题和互联网上的其他一些研究,我发现一个令人惊讶的面孔,大多数人建议如果你关闭连接并不重要,因为连接总是在请求之后关闭。
然而,我发现这些答案并不难理解。原因是,为什么所有DB库,ORM都提供关闭方法?如果它存在,那么在每个ORM/lib中都必须得到很好的利用。
有人能说明一下在什么情况下,我们应该使用close方法关闭DB连接吗?&如果这些方法一点用处都没有,为什么在所有的db libs/ORM中都存在这些方法?
编辑
我的结论
这是邦德和弗罗菲之间的一次很好的讨论,它消除了我对关闭连接的疑虑。多亏了他们俩。
我真的很难接受一个答案,因为这两个答案都是正确的。只是接受所有评论的答复,这样它就能保持在顶部。但是+1两个答案都是正确的。
发布于 2012-09-11 09:27:15
使用mysql_close()通常是不必要的,因为非持久性打开的链接在脚本执行结束时会自动关闭。
释放资源
由于PHP 4的Zend引擎引入了引用计数系统,不再引用它的资源将被自动检测出来,垃圾收集器会释放它。因此,很少需要手动释放内存。
希望这能帮到你更多。
(来源)
编辑:
mysql_close()的目的也是为了节省计算机资源,但使用它的另一个关键原因是,MySQL服务器可以接受的连接数量有限,而且如果有几个客户端无缘无故地保持连接处于打开状态,那么服务器可能需要拒绝其他正在等待的客户端。当然,这是一件坏事,因此,与mysql_free_result()一样,如果您认为上次使用数据库和脚本结束之间还有一段时间,那么调用mysql_close()是件好事。
发布于 2012-09-11 09:26:02
当您不再需要数据库连接时,关闭数据库连接始终是一种良好的做法。即使它在脚本结束后自动关闭-这可能是另一秒钟或一些分裂秒后。如果您不再需要它,一个用户点击一个页面并浪费半秒钟的数据库连接将不会有什么不同--但是一次进行20次却突然变成了10秒的开放连接--这确实产生了影响。
同时,重新使用连接可能是一种很好的练习--正常情况下,建立和打开连接至少需要几毫秒--例如,如果您插入了几十万行,那么每次加起来很少的毫秒就会非常快。
在某种程度上,它与将变量设置为空或取消设置没有什么不同。您不必这样做,但是干净优雅的代码和资源管理总是一件好事。
发布于 2012-09-11 10:06:28
数据库连接不是无限的。商业数据库软件,特别是,通常有许可证,将同时连接的数量限制在相对较小的数量。在这种情况下,当脚本不再积极使用时,您肯定希望关闭连接。虽然PHP在脚本终止时会自动关闭数据库连接,但在访问者下载完页面后才会自动关闭。如果他的连接速度慢(拨号或移动),你所知道的可能需要10到20秒。
https://stackoverflow.com/questions/12366539
复制相似问题