У меня есть PHP демон работает:PHP Daemon с доктриной 2
while (true) {
$tasks = $this->tasksFinder->findDueTasks();
foreach ($tasks as $task) {
try {
$handlerClass = $task->getHandlerClass();
/** @var AbstractTaskHandler $handler */
$handler = new $handlerClass(...$task->getArguments());
$handler->setEntityManager($this->getEm());
$handler->handle();
$this->getEm()->remove($task);
} catch (Exception $e) {
$this->logger->error("{$e->getMessage()}\n{$e->getTraceAsString()}");
$task->setDisabled(true);
$this->getEm()->persist($task);
}
}
$this->getEm()->flush();
sleep(1);
}
Внутри классов-обработчиков (которые будут извлекаться из демона) будет сделано некоторые отладки работы. Например:
$this->getEm()->transactional(function (EntityManager $em) {
$repository = $em->getRepository(UserUnit::class);
/** @var UserUnit $entity */
$entity = $repository->findOneBy(['user' => 1, 'type' => Enum::ORC]);
$em->lock($entity, LockMode::PESSIMISTIC_WRITE);
$entity->increase(1);
});
Так запись orc
для игрока 1 будет увеличен на единицу. Представьте, что у нас уже 10 орков. Создание задачи и обработка результатов демона до 11. Все в порядке, но если я установил запись в 0 вручную и создаю задачу без перезапуска демона, ей тоже будет 11. Так что кажется, что демон работает с кешем !? Я прав? Как это решить? Очистка кеша?