提问者:小点点

在错误php上执行函数


一旦我启动了一个函数,我就会将DB上的标志设置为true

并且我需要在函数末尾将其设置为false

例如:

Class Preprocessor extends Machine{

  function process(){
    $this->db->setValue(TRUE); //Setting DB flag to TRUE

    //OTHER CODES

     $this->close_db_value(); // Setting DB flag to FALSE

  }

  function close_db_value(){
    $this->db->setValue(FALSE); //Setting DB flag to FALSE
  }

}

正如您所看到的,它在正常情况下可以工作,但是如果在//其他代码部分遇到一些错误,那么它将不执行其余代码。

该函数主要在后台工作(但不是作为命令行,它只是关闭连接并开始在后台执行)。

如何确保close_db_value()函数在脚本终止时执行?

一些可能性

  1. 导致脚本终止的一些关键错误
  2. exit在//其他代码部分的某个位置调用
  3. PHPmax_execution_time已超出
  4. 武力杀戮

请帮帮我。


共2个答案

匿名用户

使用PHP中的set_error_handler()函数。 将发生错误时要调用的回调函数的名称作为第一个参数。 将想要作为触发器的错误级别(可选)作为第二个参数。

如果您希望处理所有其他类型的错误(除了SIGKILLs或强制退出),您还可以尝试使用register_shutdown_function()和error_get_last()以及switch-case语句来处理您希望处理的各种类型的错误(E_NOTICE,E_DEPRECATED等)。

例如,

register_shutdown_function('shutdown_callback');

function shutdown_callback(){
    $error_type = error_get_last();
    switch($error_type){
        case E_ERROR: break;
        case E_WARNING: break;
    }
}

匿名用户

__destruct();魔术函数也将在每次脚本结束或卸载对象时执行。