В итоге я решил сравнить проблему updated_at
объекта $observer
с текущим временем.Если последнее обновление было более 3 секунд назад (совершенно произвольное значение), я позволяю наблюдателю выполнить, иначе я возвращаюсь.Это сработало для меня, потому что два экземпляра моего наблюдателя всегда срабатывали в течение 1-2 секунд.
Я признаю, что это не лучшее решение, поскольку оно не учитывает нагрузку на сервер или другие проблемы с задержкой, поэтому, если кто-томогу придумать лучшее решение, буду признателен за отзыв.
$updatedAt = date('U', strtotime($observer->getQuote()->getUpdatedAt()));
$now = time();
if(($updatedAt + 3) > $now){
return $this; //the observer has already been executed in this request
}
.... execute observer code