Может войдёшь?
Черновики Написать статью Профиль
artoodetoo

artoodetoo +160

Вступил в наши ряды: 21 ноября 2017

Замечен в последний раз: 12 августа 2024

Оставил на форуме: 674 сообщения и 14 тем

Последнее сообщение: 20 августа 2024

Вы сможете отправить письмо, если войдёте

Статьи (1)

Как начать работать с очередями в Laravel

queue Laravel 6

Введение

Очереди (queues) это одна из сильных сторон фреймворка. Хотя они реализованы так, чтобы любой ремесленник смог их осилить, всё же некоторый порог для входа есть и моя цель помочь вам его преодолеть.

Закончив читать эту статью вы научитесь:

  • Использовать очереди для того чтобы быстро выполнять http-запросы.

  • Запускать обработку очереди с минимальными (нулевыми) дополнительными требованиями к серверу.

  • Обеспечить постоянную работу очереди.

Здесь будет рассмотрен только самый минималистический вариант организации очередей: через драйвер database. Будем считать, что это local или staging окружение, на котором не ожидается больших нагрузок. Хотя, если честно, большинство "рабочих" окружений также нельзя назвать highload :)…

Комментарии (3)

artoodetoo
  1. Да ладно, всё у PHP нормально со сборкой мусора уже лет 10 как. Проблема в программистах на PHP, которые привыкли, что он «умирает»

@Proger_XP Я в данном вопросе не эксперт, просто читаю про то, как люди используют «демонов» на PHP, например ReactPHP, и таки сталкиваются с трудностями.

Про привычки программистов не поспоришь. А так как и Laravel, и сторонние компоненты для него пишутся в первую очередь для веб, то и надеяться особо не на что :)

artoodetoo

ИМХО, совершенно недопустимо изменять данные в Представлении. У кого-то может возникнуть такой соблазн, типа, для "оптимизации". Счётчик какой-нибудь посчитать и сохранить. Но не надо так делать! Потому что это портит логику и усложняет сопровождение.

Что же до "обращения к базе" в смысле операций чтения, в идеале да, они должны все происходить до обращения к Представлению. Но мы же сами добиваемся абстракции, когда чтение свойства объекта может неявно сопровождаться каким-то действием. Представление понятия не имеет делали мы eager loading или нет. Оно просто использует объект. Короче, врядли удастся избежать select в 100% случаев. По причине именно "объектности", "принципа чёрного ящика". Мы не всегда знаем как что-то работает внутри. Мы знаем только внешний эффект.

Недавно автор статьи Povilas опубликовал свой приём по внедрению данных в шаблон: через инъекцию сервиса (@inject), который рендерит свою вьюху и возвращает её как текст для вставки. Внутри такого сервиса очевидно будут операции с базой и как по мне это не очень страшно, если они не изменяют состояние.

Calculations in Blade, without violating MVC? Use Service Injection

artoodetoo

Спасибо за интерес, @nailfor В теме очередей есть множество нюансов и особых случаев. Однако суть этой конкретной статьи в том, чтобы показать область применения и облегчить старт. Пример хорош пока он прост и сфокусирован.