2010-07-29 87 views
20

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

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

+0

可能重复[关闭mysql连接重要?](http://stackoverflow.com/questions/880885/is-closing-the-mysql-connection-important) – NewUser 2017-01-09 11:36:10

回答

6

在大多数情况下,调用mysql_close不会有什么区别,性能明智。但是关闭你的程序不再使用的资源(文件句柄,打开的套接字,数据库连接等)总是一个好习惯。

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

总之我的回答,两大规则:

  1. 只有分配资源(文件句柄,插座,数据库连接等),当你的程序就可以使用它们。
  2. 您的程序完成后立即释放资源。
10

根据the documentation

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

就个人而言,我总是喜欢以确保我迂腐地接近任何东西,我打开,但它需要不是

+1

什么是关闭链接的好处? – denniss 2010-07-29 05:36:09

+0

自己关闭链接没有任何好处。 – Charles 2010-07-29 05:49:32

+2

@Charles如果您的脚本在完成使用MySQL后需要一段时间才能完成,那么释放其他脚本可能要使用的连接可能会有所帮助。 – penguin359 2011-11-30 01:51:34

3

手动says

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

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

3

什么是关闭链接的好处?

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

我只能想到几个好处

  • 如果你的脚本有很多处理的做它使用数据库完成后,关闭数据库连接过早可能有助于释放一点点内存和其他资源(如MySQL连接),而脚本继续其他事情。这在大多数脚本中都不太可能成为问题,因为大多数脚本在完成数据库连接之后会很快终止,并且在PHP脚本终止之前连接保持打开状态的时间会比较短。

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

+4

如果限制连接到数据库的连接数,使用mysql_close()会释放其中一个连接,允许其他脚本访问 – 2010-07-29 10:15:16

6

关闭链接有什么好处?

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

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

+0

感谢这个答案。从来没有想过这个,但你的简单数学证明了关闭这些连接的巨大优势(至少使它成为标准练习,因为你永远不知道是否可能引入在完成数据库后可能需要运行一段时间的代码) 。 – tyrex 2014-11-14 12:16:09