Pull to refresh

Comments 16

Почему отказались от использования очередей? В случае, если одна задача — один процесс, проблем бы с менеджером не было

Мы не отказались от очередей. Запускать новый процесс на одну операцию из очереди - накладно, так что от демонов все равно это не избавит.

Не совсем понимаю, как влияет наличие или отсутствие очередей на работу с ORM?

Я к тому, что, мне кажется, эта задача решается проще, выделением блока try-catch в отдельный процесс, т.о. ошибки в одной из задач не будут влиять на другие. Что-то вроде


while (!$this->isShuttingDown()) {
    $task = $this->taskProvider->getNextTask();

    // fire and forget
    $this->producer->runTask($task);
}

В статье преведены примеры проблемы в том числе и с try..catch, который к самой проблеме имеет весьма посредственное отношение. Суть в том, что менеджер документов это своеобразный реестр. Об этом тоже в статье есть :)

Если я правильно понял статью, то проблема в долгоживущем скрипте, который накапливает ошибки если ObjectManager — это синглтон.
Если бы скрипт обрабатывал таски по одному и умирал при исключении — этой проблемы не было. А "повреждённые" таски выглядят как классические failed или delayed messages в терминах message broker.

Так или иначе даже в случае исключения бывает необходимо записать информацию в базу данных. Например, если в ходе обработки видео-файла мы поняли, что он поврежден.
UFO just landed and posted this here
Это статья не про очереди, а про работу с доктриной в целом, в примере у меня про задачи (Task), но на деле это может быть что угодно. Вы сейчас говорите, что эту задачу в частном случае можно было решить «вот так», а я говорю вам про общий случай.
UFO just landed and posted this here
Если так рассуждать, то получается сервис не имеет права кидать исключения. И как он в таком случае будет сообщать об ошибке клиентскому коду?
UFO just landed and posted this here
Это все спорно и скорее всего это тема для отдельного холивара. Не плохо было бы если Вы сослались на авторитетный источник. К примеру автора подобного заявления заминусовали на здесь на хабре habr.com/ru/post/476142
UFO just landed and posted this here
UFO just landed and posted this here
В Doctrine ODM не транзакций.
В Doctrine ORM есть, но судя по документации «в случае пожара» нужно закрыть EntityManager, правда что с этим дальше делать не ясно. Я с ORM не работал, может кто подскажет тут. Может даже Вы?
Sign up to leave a comment.

Articles