symfony - Symfony 实体被另一个进程更改并保持不变。我的长时间运行的进程没有检测到它
问题描述
我有一个长期运行的 symfony 进程,它定期使用查询实体
$msg = $this->entityManager->getRepository('App\Entity\Message')->findOneBy([
'id' => $id
]);
我收到了消息,一切都很好。两分钟后,相同的消息被另一个 Symfony 进程更改并保持不变。现在 5 分钟后,我再次查询相同的 msg Id:
$msg = $this->entityManager->getRepository('App\Entity\Message')->findOneBy([
'id' => $id
]);
不幸的是,我再次收到原始消息,可能是因为它被缓存了,即 Symfony/Doctrine 没有检测到其他进程已经修改了
我当然可以做的数据库
$this->entityManager->refresh($msg);
,但这会给数据库带来很多不必要的负载。
有没有更好的方法,例如为缓存设置一个通用的 timeToLive?或者甚至更好:让 Symfony 检测缓存何时“变脏”?
解决方案
推荐阅读
- forgerock - 带删除操作的 Livesync 不起作用
- intellij-idea - intellij 代码格式:less
- python - 将两个从范围创建的列表与不同的步骤结合起来,并为一定数量的索引重复值
- spring - 在 AWS 中为 SQS 定义 BackoffStrategy
- java - 如何在android上连续发出哔哔声
- android - 具有任何附加属性的服务属性装饰器会导致 Android marshmallow 上的“无法解析包”问题
- ruby-on-rails - 使用 first_or_create 时 nilClass 的未定义方法“+”
- java - 哪个是在 windows java 中执行 curl 命令的等效命令?
- ios - 从 UITableView 删除行时发生奇怪的崩溃
- r - 将最后一个和下一个非 NA 值与均匀增长的中间值桥接