php - Symfony后台事件发送响应错误 session 后

标签 php symfony redis

我在 session 中使用带Redis的Symfony 4.4
我有一些 Controller ,希望在向用户发送回复后在后台更新数据库。
所以我写了这样的代码:

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;
    }
但是我在 session 上遇到了一些问题。
在回复用户之前,是否有更好的方法来创建和运行后台 Activity 发送?

最佳答案

有两种方法可以做到这一点。
如果您在php-fpm(而不是mod_php)下运行PHP,则可以调度并捕获事件kernel.terminate在Symfony 4.4之前的版本中,这称为PostResponseEvent(4.4 / 5.0中的TerminateEvent)。
更好的选择可能是Symfony Messenger。在这里,您将创建一个消息对象,其中包含执行任务所需的所有信息,然后将其发送到后台队列(支持将Redis作为队列)。然后,工作人员使用该消息并执行任务。

关于php - Symfony后台事件发送响应错误 session 后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63030511/

相关文章:

node.js - 如何创建多个 Nodejs 套接字 io 服务器客户端?

python - django heroku 服务器错误

php - symfony2 中没有数据库访问权限的模型

php - 查询是从 PHPMYAdmin 而不是从 PHP 插入的

php - Jquery .addclass 'Duration' 即使使用 Google Labs 脚本也无法工作?

php - Symfony2 - 创建字段集

node.js - 在 Node 中创建唯一的 API key 以存储在 Redis 中

php - 当数据匹配列中的数字范围时递增并显示数组

symfony - 索纳塔管理员/用户 : "Class does not exist" (ReflectionException)

php - Symfony2 ajax 表单验证在 Twig 中呈现错误