public static function initialize() {
        if (self::$registered) {
            debugging('Shutdown manager is already initialised!');
        }
        self::$registered = true;
        register_shutdown_function(array('core_shutdown_manager', 'shutdown_handler'));

        // Signal handlers should only be used when dealing with a CLI script.
        // In the case of PHP called in a web server the server is the owning process and should handle the signal chain
        // properly itself.
        // The 'pcntl' extension is optional and not available on Windows.
        if (CLI_SCRIPT && extension_loaded('pcntl') && function_exists('pcntl_async_signals')) {
            // We capture and handle SIGINT (Ctrl+C) and SIGTERM (termination requested).
            pcntl_async_signals(true);
            pcntl_signal(SIGINT, ['core_shutdown_manager', 'signal_handler']);
            pcntl_signal(SIGTERM, ['core_shutdown_manager', 'signal_handler']);
        }
    }