我真的需要做mysql_close()吗

时间:2010-07-29 05:33:39

标签: php mysql

我真的需要做mysql_close()吗?为什么或为什么不呢?

是否有触发器在mysql_connect之后关闭链接,即使我没有执行mysql_close?

5 个答案:

答案 0 :(得分:10)

根据the documentation

  

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

就个人而言,我总是喜欢确保我迂回地关闭任何我打开的东西,但它不是必需的

答案 1 :(得分:7)

在大多数情况下,调用mysql_close在性能方面不会产生任何影响。但是,关闭程序不再使用的资源(文件句柄,打开套接字,数据库连接等)总是很好的做法。

如果您正在做一些可能需要几秒钟的事情 - 例如,从REST API读取和解析数据,则尤其如此。由于API调用正在进行,因此负面网络条件可能导致脚本阻塞几秒钟。在这种情况下,在完成并解析REST调用之后,打开数据库连接的适当时间。

总结我的答案,两大规则是:

  1. 只在程序准备好使用时才分配资源(文件句柄,套接字,数据库连接等)。
  2. 在程序完成后立即释放资源。

答案 2 :(得分:7)

  

关闭链接有什么好处?

好处是您可以在PHP请求清理之前释放与数据库的连接以及数据库服务器中的相应资源。

例如,您可以在请求的前20毫秒内查询您的请求所需的所有数据。但是,然后您的PHP代码花费另外80毫秒运行代码并格式化结果。这意味着80%的时间,应用程序在不需要的情况下保持打开数据库连接,平均而言,数据库服务器上的10个连接线程中有8个是空闲的并且使用资源。

答案 3 :(得分:3)

手册says

  

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

所以,不,不是真的。在尝试可能消耗大量资源的操作之前释放资源是有帮助的,但它可能不会产生很大的不同。

答案 4 :(得分:3)

  什么;关闭链接的好处是什么?

通常情况下,自行关闭链接没有任何好处,因为它会自动关闭。

我只能想到几个好处

  • 如果您的脚本在完成数据库使用后需要进行大量处理,那么过早关闭数据库链接可能有助于释放一些内存和其他资源(例如MySQL连接)继续其他事情。这在大多数脚本中都不太可能成为问题,因为大多数脚本在完成数据库连接之后会很快终止,并且在PHP脚本终止之前保持连接打开的时间相对较短。

  • 代码的完整性和清洁度。它可以给你一种良​​好的感觉,通常很好的代码卫生来关闭你打开的东西,即使在这种情况下它不是技术上要求的。