text-media/background-task-bundle

Symfony BackgroundTaskBundle

Installs: 3 380

Dependents: 0

Suggesters: 0

Security: 0

Type:symfony-bundle

v2.0.0 2022-04-20 12:55 UTC

This package is auto-updated.

Last update: 2024-04-22 12:26:03 UTC


README

Packagist Packagist

Модуль Symfony для фоновых задач

Установка

Модуль устанавливается через добавление зависимости в composer

composer require text-media/background-task-bundle

В конфиге doctrine необходимо описать Entry Manager с именем background_task и отдельным подключением

Активировать модуль в Kernel::registerBundles

Выполнить миграцию автоматически или вручную

php ./bin/console doctrine:schema:update --em=background_task --dump-sql

Использование

В контейнере должен быть зарегистрирован хотя бы один сервис реализующий интерфейс ProviderInterface

<?php

namespace MyBundle;

use TextMedia\BackgroundTaskBundle\ProviderInterface;

class MyService implements ProviderInterface
{
    /**
     * Получить список обработчиков по именам задач.
     *
     * @return callable[]
     */
    public function getBackgroundCallbacks(): array
    {
        return [
            'task:trim' => 'trim',
            'task:pow' => 'pow'
        ];
    }
}

services:
    my_service:
        class: MyBundle\MyService
        tags:
            - { name: "background_task.provider", alias: "my_service"}

Создать фоновую задачу можно с помощью метода TaskManagerInterface::addTask

/** @var \TextMedia\BackgroundTaskBundle\TaskManagerInterface $taskManager */
$taskManager = $container->get('background_task.manager');
$taskManager->addTask(1, 'task:pow', [2,3]);

Выполнение фоновых задач осуществляется с помощью команды

php ./bin/console background:task:run

Онформация о параметрах команды

php ./bin/console background:task:run -h

Если коллбек выбрасывает исключение DeferredException задача будет отложена