在php中使用关闭数据库连接

我总是假设关闭数据库连接始终是一个好习惯,无论数据库/ ORM如何,如 mysql_close(),Propel :: close()等.

参考我的另一个question和其他一些关于互联网的研究,我开始知道一个令人惊讶的面孔,大多数人建议如果你关闭连接并不重要,因为连接总是在请求后关闭.

但是我发现这些答案很难消化.原因是,为什么所有DB lib,ORM都提供close方法?如果它存在,在每个ORM / lib中,必须有一些很好的使用它.

有人可以说明在什么情况下,我们应该用close方法关闭数据库连接? &安培;如果这些方法根本没用,为什么它们存在于所有db libs / ORM中?

编辑

我的结论

这是Bondye和Fluffeh之间的一次很好的讨论,它清除了我对使用连接关闭的疑虑.感谢他们两个.

>如果您的脚本预计持续时间不到100毫秒,请不要打扰关闭连接.
>但是:如果脚本预计会持续更长时间并且在最后一次DB操作和脚本关闭之间有一段时间,则通过调用* close()为其他人提供免费连接.

我真的很难接受一个答案,因为答案都是正确的.只需接受所有评论的答案,使其保持最佳状态.但是1对两个正确的答案.

通常不需要使用MysqL_close(),因为非持久性打开链接会在脚本执行结束时自动关闭.

释放资源

Thanks to the reference-counting system introduced with PHP 4’s Zend Engine,a resource with no more references to it is detected automatically,and it is freed by the garbage collector. For this reason,it is rarely necessary to free the memory manually.

希望这能帮到你更多.

(source)

编辑:

MysqL_close()的目的也是为了节省计算机资源,但使用它的另一个关键原因是MysqL服务器可以接受的连接数量有限,如果有几个客户端无缘无故地打开连接,那么服务器可能需要拒绝其他等待的客户端.当然这是一件坏事,因此,与MysqL_free_result()一样,如果您认为在上次使用数据库和脚本结束之间会有一段时间,最好调用MysqL_close().

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...