#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:
Вы думали о простой очистке / уничтожении сеанса?