Выполняет ли 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) в gracefullyShutdown(), мне нужно освободить память или сделать что-то еще до exit(0)?
Или я могу вызвать исходную функцию завершения, например super.terminate() или что-то в этом роде? (super.terminate() это псевдокод)
Я читал про Как изящно остановить команду Laravel CLI. Но его подход состоит в том, чтобы создать цикл while(true), выйти из него и выполнить оставшийся код. Где я хочу остановиться/return в любом месте handle().






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