Symfony Worker - Потребление сообщений - EntityManager

Я использую Symfony 4 с мессенджером, и я использую воркера, который потребляет мои сообщения как длительный процесс.

У меня ошибка с доктриной, если я удалю свой пост и создаю заново новый и отправляю свое сообщение. $ post имеют старые данные, а не новые.

Я много чего перепробовал, но ничего не работает, работает, когда я перезапускаю свой рабочий.

class ChannelMessageHandler implements MessageHandlerInterface
{
    private $channel;
    private $bus;

    public function __construct(ChannelService $channel, MessageBusInterface $commandBus)
    {
        $this->channel = $channel;
        $this->bus = $commandBus;
    }

    public function __invoke(ChannelMessage $channelMessage)
    {
        $error = $this->channel->handleChannel($channelMessage->getUser(), $channelMessage->getService());
        if ($error) {
            throw new Exception($error[0]);
        }
        $this->bus->dispatch(new FeedMessage($channelMessage->getUser(), $channelMessage->getService()));
    }
   }
}

Мой MessageHandler вызывает службу:

class ChannelService implements ContainerAwareInterface
{
    use ContainerTrait;

    protected $em;
    protected $logger;

    public function __construct(EntityManagerInterface $entityManager, LoggerInterface $logger)
    {
        $this->em = $entityManager;
        $this->logger = $logger;
    }

    public function handleChannel($userId, $serviceName)
    {
        $user = $this->em->getRepository('App:User\Authentication\User')->findOneById($userId);
        $post = $user->getPost();

        return $this->getUserAnalyticBy($post, $serviceName);
    }

большое спасибо

похоже, что это работает, если сделать: $ this-> em-> refresh ($ user); но это хорошая практика?

Spawnrad 13.12.2018 17:36

$ this-> is-> clear () в начале тоже работает.

Spawnrad 13.12.2018 17:52

вам нужно обновить или перезагрузить его полностью да. Если вы этого не сделаете, Doctrinne получит объект из своего кеша.

Etshy 14.12.2018 15:53

Это поведение уже исправлено в Symfony 4.4, см. PR github.com/symfony/symfony/pull/31334/files

Serhii Polishchuk 28.08.2019 06:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
3
4
415
0

Другие вопросы по теме