Сущность Symfony изменилась и сохранилась другим процессом.Мой длительный процесс не обнаруживает это - PullRequest
1 голос
/ 27 июня 2019

У меня есть длительный процесс 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 обнаруживает, когда кэш становится «грязным»?

...