我有一个symfony4应用程序,该应用程序具有运行几分钟的后端处理组件。目前,它以bash脚本和一些symfony控制台命令开始。
我希望能够在Web界面中启动此过程,并显示其进度(并防止它在仍然运行时再次启动)。
后台任务不需要任何参数,它会从数据库中读取所有需要的数据。
由于后端过程需要很长时间,因此我不想让网页在运行时挂断。 Web前端需要启动它,然后分离。用户打算稍后再回来检查结果。
我无法在Symfony文档中或此站点上找到解决方案。
答案 0 :(得分:1)
您可以将messenger component用于长时间的后台任务。
您也可以通过订阅PostResponseEvent来处理长任务,但这仅在不使用modphp的情况下有效。
答案 1 :(得分:0)
我看到的最简单的解决方案是拥有一个具有唯一ID的表“ transaction”-触发后台任务后,您首先创建一个事务并将标志设置为“ running”(当然要完成或删除它)完成后)。
当您将此ID返回给后台任务的请求者时,当您想查看更新时,它可以轻松地询问该交易ID及其状态。