在错误php上执行一个函数

时间:2013-06-26 11:39:02

标签: 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
  }

}

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

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

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

一些可能性

  1. 导致脚本终止的一些严重错误
  2. exit在// @ OTHER CODE部分
  3. 上调用
  4. PHP max_execution_time已超出
  5. A Force Kill
  6. 请帮忙。

2 个答案:

答案 0 :(得分:1)

在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;
    }
}

答案 1 :(得分:0)

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