首页 > 解决方案 > PHP Laravel 5 CLI 终止信号覆盖

问题描述

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()

标签: laravellaravel-5

解决方案


您是否考虑过仅刷新/破坏会话?


推荐阅读