kozhemin/yii2-background-task-queue

Yii2 background task queue Extension is a simple and easy-to-use extension for running background tasks in Yii2 applications

1.0.0 2025-01-16 20:51 UTC

This package is auto-updated.

Last update: 2025-06-16 22:10:46 UTC


README

Yii2 background task queue Extension is a simple and easy-to-use extension for running background tasks in Yii2 applications.

Installation

The preferred way to install this extension is through composer.

composer require kozhemin/yii2-background-task-queue

migration

php yii migrate --migrationPath=@vendor/kozhemin/yii2-background-task-queue/migrations

Basic Usage

use kozhemin\backgroundTaskQueue\TaskPublisher;

$task = new MySimpleTask();
$taskPublisher = new TaskPublisher($task);
$queue = $taskPublisher
    ->setDescription('My simple task')
    ->setDelay(60)
    ->publish();

    if ($queue->hasErrors()) {
        echo "\nTask not created. Errors: " . implode(', ', $queue->getFirstErrors()) . "\n";
        return ExitCode::UNSPECIFIED_ERROR;
    }

    echo "\nTask created with id: " . $queue->uuid . "\n";

Task class example

use kozhemin\backgroundTaskQueue\contracts\HandlerInterface;
use kozhemin\backgroundTaskQueue\contracts\TaskResponseInterface;
use kozhemin\backgroundTaskQueue\TaskResponse;

class MySimpleTask implements HandlerInterface
{
    public function run(): TaskResponseInterface
    {
        // some code here
        echo "Start task\n";
        sleep(3);
        echo "End task\n";

        $response = new TaskResponse();
        $response->setMessage(['firstResponseMsg' => 'Hello from task1!']);
        $response->appendMessage(['secondResponseMsg' => 'Hello from task2!']);

        return $response;
    }
}

all commands

- task-queue                   Controller for managing background tasks.
    task-queue/run             Runs the task.
    task-queue/ls              Displays a list of tasks.
    task-queue/info            Displays information about the task.
    task-queue/cancel          Cancels the task.
    task-queue/retry           Retries the task.
    

run task

# run task
php yii task-queue/run

# or with uuid
php yii task-queue/run <uuid>

example crontab

# run task every minute
* * * * * php yii task-queue/run

# run task every 30 seconds
* * * * * php yii task-queue/run
* * * * * sleep 30 && php yii task-queue/run

# run every 10 seconds
* * * * * php yii task-queue/run
* * * * * sleep 10 && php yii task-queue/run
* * * * * sleep 20 && php yii task-queue/run
* * * * * sleep 30 && php yii task-queue/run
* * * * * sleep 40 && php yii task-queue/run
* * * * * sleep 50 && php yii task-queue/run

listen task

php yii task-queue/ls

# or with status filter
php yii task-queue/ls --limit=10 --status=0,1,2,3

# run help command for more options 
php yii help task-queue/ls

example listen task real time

# run listen task real time
watch -n 1 php yii task-queue/ls

Screenshots

# task list
php yii task-queue/ls --status=0,1,2,3

Screenshot

# task info
php yii task-queue/info 67895e8b58fbb

Screenshot