Yii2. Queue. Очереди в Yii2.

Главная  >>  Backend  >>  Yii2. Queue. Очереди в Yii2.

Работа с очередью — важнейший момент, позволяющий сделать приложение и его работу более простой и быстрой, а саму архитектуру более понятной и распределенной. В этой статье пример работы с расширением yii2-queue, т.е. работой с очередями в Yii2.

Работа с очередью может быть использована при всех времязатратных операциях, а также работе с внешними ресурсами — например, отправка почты, общение со сторонними API, генерация PDF-файлов и т.д. Сфер применения — множество.

Итак, от слов — к делу. Работаем с расширением yii2-queue.

Сначала, как всегда устанавливаем:

Я приведу пример работы с DB-драйвером. При желании и необходимости его можно заменить на другой из коробки (синхронный, файловы, Redis, RabbitMQ и т.д.) или написать свой.

1. Добавляем таблицу для работы с компонентом (MySQL):

ВАЖНО! Если вы используете tablePrefix — не забудьте добавить его к имени таблицы.

2. Далее, для подключения расширения следует добавить в конфигурацию приложения его компонент (/common/main.php).

Также следует добавить компонент в bootstrap (в этом же файле):

ВАЖНО! В зависимости от начальной конфигурации Вашего приложения может быть необходимость провести пункты выше отдельно для console и backend|frontend.

3. Компонент подключен. Запускаем прослушку очереди:

Код выше запустит процесс проверки наличия заданий в очереди с интервалом в 5 секунд, а также будет выводить в консоль информацию о выполнении задач и подсвечивать её цветами.
php yii2 queue очередь на yii2

Также есть команда для мгновенного запуска обработки всех заданий в очереди:

4. Добавление заданий в очередь:
Одно задание — один файл, имплементящий \yii\queue\Job.
Пример такого файла ниже:

Согласно интерфейсу, класс должен иметь метод execute, который, собственно и является выполнением задания.

И наконец-то, само добавление задания в очередь:

В метод push следует передать экземпляр нашего класса, при этом, в случае необходимости, также передать те параметры, которые объявлены public-ами в job-е.

В самом простом виде — это полный алгоритм начала работы с очередями. Расширение, с которым мы работаем имеет множество возможностей — мы можем программно запускать обработку очереди, проверять состояние заданий по их id, добавлять информацию о заданиях в debug-toolbar и т.д.

Но описать весь функционал в рамках одной статьи не является возможным, поэтому я разобью описание работы с очередями на Yii2 на несколько статей.

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

Удачи!


  • Alexander

    Зачем писать статьи переводы из документации? Статья с нулевой пользой. А где реальные ситуации применения очередей? Например менеджер задач, который запускает задачи из веб, или как запустить Job из консоли без написания отдельного консольного контроллера?

    • http://onfor.info onfor

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