Skip to content

Latest commit

 

History

History
74 lines (60 loc) · 3.57 KB

about-queue.md

File metadata and controls

74 lines (60 loc) · 3.57 KB

Очереди

Используется yiisoft/yii2-queue в связке с redis через yiisoft/yii2-redis

Конфиг очередей размещён в основном конфиге общей части приложений, php-data/common/config/main.php

return [
    //....
    'components' => [
        'redis' => [
            'class' => 'yii\redis\Connection',
            //....
        ],
        'queue' => [
            'class' => \yii\queue\redis\Queue::class,
            'redis' => 'redis', // Компонент подключения к Redis или его конфиг
            'channel' => 'queue', // Ключ канала очереди
        ],
    ],
];

автозагрузка консольных команд - соответственно в основном конфиге консольного приложения. php-data/console/config/main.php

return [
    //....
    'bootstrap' => [
        'log',
        'queue', // Компонент регистрирует свои консольные команды
    ],
];

впрочем, встроена проверка if ($app instanceof ConsoleApp)..., поэтому можно размещать в основном конфиге общей части.

Настройка и использование последних освещены в about-redis

Документация о очередях доступна в руководстве

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

В простейшем случае воркеры обрабатывают задания, представленные в этом же проекте.
Например, php-data/common/components/queue/DownloadJob.php

<?php

namespace components\queue;

use yii\base\BaseObject;

class DownloadJob extends BaseObject implements \yii\queue\JobInterface
{
    public $url;
    public $file;

    public function execute($queue)
    {
        file_put_contents($this->file, file_get_contents($this->url));
    }
}

будет сохранять загрузки в пределах контейнера run_php-supervisor_1 (при запуске композиции из docker-run/docker-compose.yml)

Управление запуском воркеров происходит с помощью supervisor в контейнере на основе bscheshirwork/yii2-alpine-supervisor[-xdebug]

Note: Компонент yiisoft/yii2-queue предостваляет инструмент для создания заданий в gii

Посмотреть статистику по работе очереди можно с помощью консольной команды queue/info из контейнера php либо php-supervisor

docker-compose -f /home/dev/projects/docker-yii2-app-advanced-redis/docker-run/docker-compose.yml exec php-supervisor ./yii queue/info