У меня есть длительный процесс Symfony, который регулярно запрашивает объекты, используя
$msg = $this->entityManager->getRepository('App\Entity\Message')->findOneBy([
'id' => $id
]);
. Я получаю сообщение, и все в порядке. Через две минуты это же сообщение изменяется и сохраняется другим процессом Symfony.Теперь, через 5 минут, я снова запрашиваю тот же идентификатор сообщения:
$msg = $this->entityManager->getRepository('App\Entity\Message')->findOneBy([
'id' => $id
]);
К сожалению, я снова получаю исходное сообщение, возможно, потому что оно кэшировано, т.е. Symfony / Doctrine не обнаружил, что другой процесс изменилбаза данных
Конечно, я могу сделать
$this->entityManager->refresh($msg);
, но это приведет к большой ненужной нагрузке на базу данных.
Есть ли лучший способ, например, установить общее время для кэша?Или даже лучше: Symfony обнаруживает, когда кэш становится «грязным»?