gpt4 book ai didi

symfony - 停止 Symfony 控制台命令

转载 作者:行者123 更新时间:2023-12-04 23:41:28 27 4
gpt4 key购买 nike

我有一个连续循环的 Symfony 控制台命令

protected function execute(InputInterface $input, OutputInterface $output)
{
//...

pcntl_signal(SIGHUP, [$this, 'stopCommand']);

$this->shouldStop = false;

while (true) {


pcntl_signal_dispatch();

if ($this->shouldStop) {
break;
}
sleep(60);
}
}

protected function stopCommand()
{
$this->shouldStop = true;
}

我希望我能阻止他使用 Controller
    public function stopAction()
{
posix_kill(posix_getpid(), SIGHUP);

return new Response('ok');
}

但我不知道为什么它不起作用

最佳答案

它可能不起作用,因为控制台命令与 Controller 操作在不同的进程中运行。尝试在执行开始时将控制台命令的 PID 编号存储到文件中,例如:

file_put_contents("/tmp/console_command.pid", posix_getpid());

然后在 Controller 中使用此代码:
posix_kill(file_get_contents("/tmp/console_command.pid"), SIGHUP);

关于symfony - 停止 Symfony 控制台命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36388425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com