symfony返回地面活动后发送响应错误会话

iqxoj9l9  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(313)

我正在使用Symfony4.4和redis进行会话。
我有一些控制器,我希望更新后在后台数据库发送回复给用户。
所以我写了这样的代码:

class GetCatController extends AbstractController
{
    public function getCatController(LoggerInterface $logger, ManagerRegistry $doctrine, SessionInterface $session, ValidatorInterface $validator)
    {
       [...]
       $replyToSend =  new JsonResponse($reply, 200);
       $replyToSend->send();

      //My back ground activity like to do some query on the db.
        [...]

        return null;
    }

但我对会议有些问题。
有没有更好的方法在回复用户之前创建并运行后台活动发送?

mrfwxfqh

mrfwxfqh1#

有两种体面的方法可以做到这一点。
如果您是在phpfpm(不是mod\php)下运行php,那么您可以在symfonypre-4.4中调度并捕获一个事件kernel.terminate,这称为 PostResponseEvent ( TerminateEvent 从4.4/5.0)。
更好的选择可能是与symfony信使。在这里,您将创建一个消息对象,其中包含执行任务所需的所有信息,并将其发送到后台队列(redis支持作为队列)。然后,一个工作者使用该消息,并执行该任务。

相关问题