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