Не используйте функцию register_shutdown_function напрямую. Создайте класс, который управляет всеми функциями выключения и имеет свою собственную функцию и свойство enable.
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;
}
}
Убедитесь, что первая зарегистрированная завершающая функция содержит путь, который вызывает выход() –
я работаю с очень сложной системой, и я на самом деле не знаю, что является первой зарегистрирован функцией отключения. Я просто хотел бы выйти, не вызывая функции выключения, поэтому я могу легко отлаживать. – fstab
Если вы хотите легко отлаживать, используйте отладчик (например, xdebug), где вы можете установить контрольные точки и проверить значения и т. Д. –