明智地关闭mysql连接效率是否至关重要,还是在php文件运行后自动关闭?
明智地关闭mysql连接效率是否至关重要,还是在php文件运行后自动关闭?
Answers:
从文档中:
注意:脚本执行结束后,将立即关闭服务器链接,除非通过显式调用mysql_close()提前关闭了该链接。
如果您的脚本在提取结果后要执行大量处理,并且已检索到完整的结果集,则绝对应该关闭连接。如果您不这样做,那么当Web服务器使用率过高时,MySQL服务器就有可能达到其连接限制。如果直到脚本结束前都无法关闭MySQL连接,这样做会更干净,尽管不必显式这样做。
我不确定fastcgi如何影响事物。 一页声称,支持fastcgi的PHP构建将创建持久连接,即使对于mysql_connect也是如此。这与文档相矛盾,因为该文档在进程而不是脚本结束时关闭了连接。我将建议使用mysql_close()而不是对其进行测试。实际上,我建议使用PDO(如果可用)。
"The link to the server will be closed as soon as the execution of the script ends."
当用户提前关闭页面时,对于PHP服务器而言都无关紧要。它像往常一样运行脚本,并像往常一样结束脚本。只有用户看不到结果。
至关重要吗?没那么多
遵循它是否被认为是一种好习惯?是。
我不明白您为什么不想关闭它。
mysql_close
说“通常不需要使用mysql_close(),因为在脚本执行结束时,非持久性打开链接会自动关闭。” 我不认为不关闭连接不是一个坏习惯。
大多数CMS在请求结束时关闭MySQL连接,这实际上是没有意义的,因为PHP还是会这样做。
但是,如果您有一个脚本,其中不再需要连接,请在脚本中间说,然后进行其他繁重的活动,那么最好显式关闭连接。这将释放一些资源。
现在,关于关闭连接的好处已说了很多,但是关于不关闭连接的好处却几乎没有说过。本质上,如果您没有在脚本末尾关闭连接,那么您实际上是在节省一些资源。想象一个Web应用程序(或任何应用程序)每秒接收100次浏览量。因此,您每秒需要调用mysqli_close
100次-这意味着您每秒需要进行100次不必要的往返数据库服务器往返操作,以关闭打开的连接。从性能的角度来看,这纯粹是开销,因为无论脚本何时完成,PHP都会检查打开的连接并关闭这些连接,这可能是因为一切发生得如此之快,使得PHP看不到您拥有关闭这些连接,然后尝试再次关闭它们。
注意:上面的答案假定您未使用持久连接(任何主要CMS中均未使用持久连接)。