【问题标题】:Why use mysqli_close()?为什么使用 mysqli_close()?
【发布时间】:2010-11-24 00:15:36
【问题描述】:

有什么理由我应该在查询后或脚本结束时关闭连接?

做/不做有什么好处?

【问题讨论】:

标签: php mysqli


【解决方案1】:

连接(如果不是持久的)总是在脚本结束时关闭,所以理论上你不需要自己关闭。

不过,如果您的 PHP 脚本需要大量时间来执行,那么当您不再需要对数据库执行任何请求时关闭连接是一个好主意——至少,如果长时间计算是在之后完成的查询。

如果您的应用程序部署在共享主机上尤其如此:您的用户帐户通常只能同时打开几个连接。 (在共享主机上同时打开的连接数可能非常少;在私有服务器上通常更大)


我们经常不自己关闭连接的原因是:

  • 我们通常不知道什么时候完成了所有查询——对于由许多小“块”组成的页面尤其如此;它们中的每一个都是独立于其他的,并且可以自己进行查询;那么,我们什么时候可以关闭连接呢?
  • 网页的生成速度通常非常快,因此我们不必担心关闭与 DB 的连接。

【讨论】:

  • 每次您不关闭连接时,DBA 都会杀死一只小猫。
  • 每次我不关闭连接时,PHP 都会为我完成工作:-p PHP 拯救了小猫! ;;实际上,我所说的由块组成的页面是非常正确的:想想任何 CMS,例如:什么时候知道应该关闭连接?在 PHP 代码执行结束时(不是之前,因为某些“块”可能仍需要执行一些 SQL 查询);;所以,手动关闭连接是没有用的......;;当然,除非您生成需要时间且不执行任何数据库查询的内容,例如 PDF 或类似的内容。
【解决方案2】:

这样做的好处是,如果您要进行长时间运行的处理,但已经完成了对数据库的查询,那么保持打开连接是没有意义的。保持用户会话打开(阻止其他请求)也是如此。

这方面的一个例子可能是创建一个大型 PDF 报告。这可能需要您 20-30 多秒来创建和写出文件,但您会在第一秒内获得所需的所有数据。

但通常您也可以自动执行(假设连接不是持久的)。

【讨论】:

  • 什么是持久连接? mysqli(MYSQL_HOSTNAME, USERNAME, PASSWORD, DATABASE); 是持久的?
  • 与mysql扩展不同,mysqli没有提供单独的打开持久连接的函数。要打开持久连接,您必须在连接时将 p: 添加到主机名。
猜你喜欢
  • 2013-01-27
  • 2014-10-06
  • 1970-01-01
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2011-08-30
  • 2010-11-01
相关资源
最近更新 更多