Нуждается ли Laravel observer в собственных транзакциях с БД?

#laravel

Вопрос:

У меня довольно большая система, которая использует observer для обновления моей базы данных. Мой вопрос в том, нужна ли наблюдателю собственная транзакция БД? Или он будет использовать ту же транзакцию в контроллере, которая запускает события?

У меня были очень редкие проблемы с тупиком. Решение прямой тупиковой ситуации состоит в том, чтобы просто включить аргумент reattempt в метод DB::transaction. Но тупик происходит в моем наблюдателе (в котором я не использовал транзакцию бд) вместо функции контроллера.

Комментарии:

1. События должны запускаться, пока транзакция все еще выполняется в обычном режиме, однако, если ваш обработчик событий также содержит критический раздел (который должен выполняться атомарно), вы также должны включить его в транзакцию. Если транзакция уже запущена (и в зависимости от СУБД), то либо запускается подтранзакция, либо ничего не происходит. Однако это также должно касаться вас в тех случаях, когда событие инициируется вне транзакции