PHP Laravel 5 CLI завершает переопределение сигнала

#laravel #laravel-5

#laravel #laravel-5

Вопрос:

Выполняет ли PHP Laravel какую-либо очистку, когда она завершается сигналом завершения?

Например, следующий код:

 class MyCommand extends Command
{
    protected $signature = 'get:help';
    protected $description = 'I need help';
    public function handle()
    {
        pcntl_async_signals(true);
        pcntl_signal(SIGTERM, [$this, "gracefullyShutdown"]);
        pcntl_signal(SIGINT, [$this, "gracefullyShutdown"]);

        // Do some procedure task here, no loop.
    }

    public function gracefullyShutdown()
    {
        // Do I need to do any clean up?
        //exit(0);
    }
}
  

Поскольку функция сигнала завершения получила переопределение, handle() продолжает выполняться.

Если я хочу вызвать exit(0) in gracefullyShutdown() , нужно ли мне освободить память или сделать что-нибудь еще перед exit(0) этим?

Или я могу вызвать исходную функцию завершения, как super.terminate() или что-то в этомроде? ( super.terminate() является псевдокодом)

Я читал о том, как изящно остановить команду командной строки Laravel. Но его подход заключается в том, чтобы создать while(true) цикл, прервать и выполнить оставшийся код. Где я хочу остановиться / return в любом месте handle() .

Комментарии:

1. Можете ли вы объяснить немного больше о том, чего вы пытаетесь достичь? На данный момент не ясно, почему бы вам просто не написать handle() { return; } ?

Ответ №1:

Вы думали о простой очистке / уничтожении сеанса?