【问题标题】:Symfony back ground activity after to send response error session发送响应错误会话后的 Symfony 后台活动
【发布时间】:2020-11-11 18:40:14
【问题描述】:

我在会话中使用Symfony 4.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;
    }

但是我对会话有一些问题。

有没有更好的方法在回复用户之前创建和运行后台活动发送?

【问题讨论】:

    标签: php symfony redis


    【解决方案1】:

    有两种不错的方法可以做到这一点。

    如果你在 php-fpm(不是 mod_php)下运行 PHP,你可以调度和捕获一个事件,kernel.terminate 在 Symfony 4.4 之前的版本中,这称为PostResponseEventTerminateEvent 来自 4.4/5.0)。

    Symfony Messenger 可能是更好的选择。在这里,您将创建一个 message 对象,其中包含执行任务所需的所有信息,并将其发送到后台队列(支持 Redis 作为队列)。然后工作人员使用该消息并执行任务。

    【讨论】:

      猜你喜欢
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      • 2011-01-03
      相关资源
      最近更新 更多