symfony4:启动并跟踪长后台任务的进度

时间:2019-01-28 10:58:43

标签: shell symfony symfony4

我有一个symfony4应用程序,该应用程序具有运行几分钟的后端处理组件。目前,它以bash脚本和一些symfony控制台命令开始。

我希望能够在Web界面中启动此过程,并显示其进度(并防止它在仍然运行时再次启动)。

后台任务不需要任何参数,它会从数据库中读取所有需要的数据。

由于后端过程需要很长时间,因此我不想让网页在运行时挂断。 Web前端需要启动它,然后分离。用户打算稍后再回来检查结果。

我无法在Symfony文档中或此站点上找到解决方案。

2 个答案:

答案 0 :(得分:1)

您可以将messenger component用于长时间的后台任务。

您也可以通过订阅PostResponseEvent来处理长任务,但这仅在不使用modphp的情况下有效。

答案 1 :(得分:0)

我看到的最简单的解决方案是拥有一个具有唯一ID的表“ transaction”-触发后台任务后,您首先创建一个事务并将标志设置为“ running”(当然要完成或删除它)完成后)。

当您将此ID返回给后台任务的请求者时,当您想查看更新时,它可以轻松地询问该交易ID及其状态。