Symfony实体已更改并通过另一个过程持久化。我长时间运行的进程没有检测到它

时间:2019-06-27 11:19:48

标签: symfony caching doctrine multiprocessing

我有一个运行很长时间的symfony程序,可以定期使用

查询实体
 $msg = $this->entityManager->getRepository('App\Entity\Message')->findOneBy([
        'id' => $id
    ]);

我收到消息,一切正常。两分钟后,同一条消息被另一Symfony进程更改并保留。现在5分钟后,我再次查询相同的味精ID:

 $msg = $this->entityManager->getRepository('App\Entity\Message')->findOneBy([
        'id' => $id
    ]);

不幸的是 我再次收到原始消息,可能是因为它被缓存了,即Symfony / Doctrine没有检测到其他进程已经修改了数据库

我当然可以

$this->entityManager->refresh($msg);

,但这会在数据库上造成很多不必要的负载。

有没有更好的方法,例如设置缓存的一般timeToLive吗?甚至更好:Symfony是否检测到缓存何时变脏?

0 个答案:

没有答案