首页 > 解决方案 > 如何在 symfony 中运行后台进程

问题描述

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

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

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

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

任何回应将不胜感激。

标签: phpsymfony

解决方案


我不得不对进程输出进行desibale并在命令后添加'&'这里的答案:

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

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

推荐阅读