【问题标题】:Does PHP close a mysql(i) connection on an fatal error?PHP 是否会在发生致命错误时关闭 mysql(i) 连接?
【发布时间】:2014-03-12 14:17:29
【问题描述】:

我知道 PHP 在脚本执行结束时会关闭任何打开的 MySQL 连接,但是如果发生致命错误,连接会发生什么?

  • PHP 是否会关闭连接而不考虑错误?
  • 或者他们会在一段时间后关闭?
  • 还是那种情况下没有打开?

我在这里或 Google 上找不到任何东西。

我使用静态连接来重用它们。另外还有一个__destruct() 可以关闭它。在执行结束时,调用析构函数(我在日志文件中看到它)。 但是,如果我犯了一个致命错误(只是为了找出发生了什么),则不会调用析构函数。连接会发生什么?

【问题讨论】:

  • 这不能回答这个问题,但您可以尝试使用set_error_handler 和/或register_shutdown_function 来关闭MySQL 连接。不过,我不确定这些是否会捕获致命错误。只是一个想法。更新:也许这可以帮助:stackoverflow.com/a/8527924
  • 感谢@RocketHazmat 编辑!! :)

标签: php mysql


【解决方案1】:

除非你使用持久连接,否则mysql连接总是会在脚本执行结束时自动关闭。

PHP 致命错误将停止脚本的执行,并释放 mysql 连接。

【讨论】:

    【解决方案2】:

    php 引擎会在发生此类崩溃时删除所有打开的连接。就像没有崩溃一样。这是引擎所做的清理工作。例外:当使用持久连接时,连接会被合并并被后续脚本重用。

    你提到的析构函数是一个析构函数在你的类中,可能是一些包装类。如果 php 关闭与 mysql 服务器的连接,则没有理由调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      相关资源
      最近更新 更多