TGViewer
WebDev+ | Веб-разработка WebDev+ | Веб-разработка @webdev_plus · 7.91K subscribers
Post #1504 539
Следующий урок, который мы усвоили при масштабной эксплуатации Laravel Scout:
Если в Scout включены очереди, индексация моделей выполняется через фоновые задачи, которые ставятся в очередь при вызове $model->save().

В нагруженных приложениях могут возникать две ситуации:
одна и та же модель может сохраняться несколько раз за короткий промежуток времени;
очередь Scout может накапливаться, пока воркеры постепенно обрабатывают задачи.

В обоих случаях в очередь попадает множество дублирующихся задач на индексацию одной и той же модели ещё до того, как воркер успеет обработать первую из них.

Это создаёт лишнюю нагрузку, поскольку во время обработки задачи актуальная версия модели заново загружается из базы данных. В итоге каждая дублирующаяся задача повторно получает и индексирует одно и то же финальное состояние модели.
Чтобы решить эту проблему, я отправил PR (который был принят), добавляющий две новые задачи, которые можно включить по желанию. Они реализуют интерфейс ShouldBeUniqueUntilProcessing, который не позволяет ставить в очередь задачи для моделей, уже ожидающих индексации в очереди.

Таким образом, пока задача индексации конкретной модели находится в очереди, новые дублирующиеся задачи для неё создаваться не будут. Это уменьшает количество лишней работы, снижает нагрузку на очередь и сокращает число ненужных операций индексации.

@WebDev_Plus
More from @webdev_plus
  1. Oct 5, 2026Работает!? Не трогай 🎯
  2. Oct 5, 2026Фронтендер психанул и написал крестики-нолики без HTML и JavaScript Вся игра работает прак…
  3. Oct 4, 2026Годный генератор CSS-паттернов для ваших проектов Тут можно быстро собирать крутые CSS-пат…
  4. Oct 4, 2026Таблица Менделеева для HTML Бесплатная интерактивная шпаргалка: теги по категориям, поиск,…
  5. Oct 3, 2026Как посмотреть SQL-запрос в Laravel Eloquent? Используйте метод toSql(), чтобы увидеть SQL…
  6. Oct 3, 2026Совет по Laravel: доступ к вложенным массивам через точечную нотацию Используйте dot notat…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →