如何退出 php 脚本(例如使用 exit() 函数)但不触发所有先前注册的关闭函数(使用 register_shutdown_function)?
谢谢!
编辑:或者,有没有办法从所有注册的关闭功能中清除?
如果进程被 SIGTERM 或 SIGKILL 信号杀死,则不会执行关闭函数。
posix_kill(posix_getpid(), SIGTERM);
不要直接使用 register_shutdown_function。创建一个管理所有关闭功能并具有自己的功能和启用属性的类。
class Shutdown {
private static $instance = false;
private $functions;
private $enabled = true;
private function Shutdown() {
register_shutdown_function(array($this, 'onShutdown'));
$this->functions = array();
}
public static function instance() {
if (self::$instance == false) {
self::$instance = new self();
}
return self::$instance;
}
public function onShutdown() {
if (!$this->enabled) {
return;
}
foreach ($this->functions as $fnc) {
$fnc();
}
}
public function setEnabled($value) {
$this->enabled = (bool)$value;
}
public function getEnabled() {
return $this->enabled;
}
public function registerFunction(callable $fnc) {
$this->functions[] = $fnc;
}
}