如何在symfony中运行后台进程

时间:2018-04-26 09:49:45

标签: php symfony

我有一个symfony commad,需要几分钟才能完成。我想通过http请求运行它。问题是服务器在发送响应后立即杀死命令进程,他有一个超时。

我试图异步使用symfony进程但仍然无法正常工作(我总是遇到超时问题)。

我不想使用kernel.terminate事件,因为它不是最佳实践。这是我的控制器中的代码:

            $commandProcess=new Process('php  bin/console app:doSomeThing');
            $commandProcess->setWorkingDirectory('./../');
            $commandProcess->start();
            $commandProcess->setTimeout(50000000);

非常感谢任何回复。

1 个答案:

答案 0 :(得分:0)

我不得不取消过程输出并添加'&'在命令之后 答案如下:

     new Process('php  bin/console app:dosomthing &');

    $commandProcess=new Process('php  bin/console app:dosomthing &');
    $commandProcess->setWorkingDirectory('./../');
    $commandProcess->disableOutput();
    $commandProcess->setTimeout(1800);
    $commandProcess->start();