一旦我启动了一个函数,我就会将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()
函数在脚本终止时执行?
一些可能性
exit
在//其他代码部分的某个位置调用max_execution_time
已超出请帮帮我。
使用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();
魔术函数也将在每次脚本结束或卸载对象时执行。