Есть ли особенности работы Doctrine в долгоживущих приложениях?

Очень интересует ответ на такой вопрос - Есть ли особенности при работе с Doctrine в долгоживущем приложении?
Есть консьюмер, который слушает очередь, когда что - то получает, то пишет это в БД.
Перед записью он периодически делает запросы в бд за справочной информацией.

Так вот, замеил особенность. Если в БД данные изменить SQL запросом, то менеджер доктрины не видит этого.
Он как будто проюолжает игнонировать БД. Он не видит эти измененные данные.
После рестарта консьюмера все ок.
Как такое может быть?
Консьюмеру не хватате параметра какого - то?
Или надо перед каждым запросом подключение пересоздавать?

Кто - ниюудь сталкивался с подобным?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Как такое может быть?

Если вы достаете сущность по id, то она загружается один раз и потом не обращается к БД, следя за изменениями сущности из приложения
Предлагаю очищать EM после каждой обработки задачи через $em->clear()

Sometimes you want to clear the identity map of an EntityManager to start over. We use this regularly in our unit-tests to enforce loading objects from the database again instead of serving them from the identity map. You can call EntityManager#clear() to achieve this result.
https://www.doctrine-project.org/projects/doctrine...


Чтение можно в обход делать, изменение сущностей лучше не делать в обход EM

Консьюмеру не хватате параметра какого - то?

Он считает, что с сущностью вы работаете из приложения, а не в обход
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы