php - 如何在 symfony 中运行后台进程
问题描述
我有一个需要几分钟才能完成的 symfony commad。我想通过http请求运行它。问题是服务器在发送响应后就杀死了命令进程,他有一个超时。
我尝试异步使用 symfony 进程但仍然无法正常工作(我总是遇到超时问题)。
我不想使用 kernel.terminate 事件,因为它不是最佳实践。这是我的控制器中的代码:
$commandProcess=new Process('php bin/console app:doSomeThing');
$commandProcess->setWorkingDirectory('./../');
$commandProcess->start();
$commandProcess->setTimeout(50000000);
任何回应将不胜感激。
解决方案
我不得不对进程输出进行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();
推荐阅读
- python - 从源代码构建 Python 为 64 位
- ruby-on-rails - Docker Compose 找不到 Gemfile 或 .bundle/ 目录
- javascript - 如何使用 nodeca/pica 和 React 在客户端调整图像大小?
- xml - 使用 xsd 文件验证 Soap xml 响应
- docker - 无法为使用 macvlan 驱动程序的 docker-compose 获取静态 IP
- laravel - laravel 路线不适用于联系表格
- javascript - Angular 5 - 在列标题单击时上下更改雪佛龙
- jquery - jquery easeOutBounce 水平
- class - Flutter 无法在同一个类中调用 FireStore 文档变量
- multithreading - 如何等待线程在 Kotlin 中初始化变量?