CodeIgniter 4 的队列任务模块

0.0.5 2019-06-29 13:43 UTC

This package is auto-updated.

Last update: 2024-08-29 05:00:36 UTC


README

CodeIgniter 4 的队列任务模块,带有 CLI 持久化器

  1. Codeigniter
    • MySQLi
    • PDO
    • PostgreSQL
    • Oracle
    • ODBC
    • ....
  2. PDO(不使用 Codeigniter 模型系统,是自包含的)
  3. Redis //TODO: 将会添加

我期待每一份帮助,进一步的开发和建议

安装

安装此包

$ composer require codeigniterextqueue

$ composer require codeigniterext/queue:dev-master

现在您可以从命令提示符使用以下命令

$ php spark queue:delete
$ php spark queue:deleteall
$ php spark queue:forget
$ php spark queue:forgetall
$ php spark queue:publish
$ php spark queue:resetall
$ php spark queue:retry
$ php spark queue:run
$ php spark queue:work

配置

从命令提示符运行以下命令,它将复制队列迁移(20190526184519_queue_tasks.php)和配置(Queue.php)到您的应用程序

然后在您的 Config/Modules.php 中,更改以下内容

public $enabled = true;
public $discoverInComposer = true;

然后

php spark queue:publish

注意:如果您不想使用 Codeigniter 持久化器,只需确认发布配置文件,并输入发布队列迁移:n

最后前往配置文件并编辑它

使用它

1. Codeigniter 持久化器

在队列配置文件中,您必须输入 codeigniter 作为连接

$queueConnection = 'codeigniter';

现在您可以从命令提示符使用以下命令迁移队列表

注意:您必须之前输入过命令 php spark queue: publish 并输入发布队列迁移:y

php spark migrate:latest

2. PDO 持久化器

在队列配置文件中,您必须输入 PDO 作为连接

$queueConnection = 'pdo';

使用以下 SQL 代码创建一个表

 CREATE TABLE IF NOT EXISTS `queue_tasks` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `method_name` VARCHAR(255) NULL,
    `data` TEXT NULL,
    `priority` TINYINT NOT NULL,
    `unique_id` VARCHAR(32) NULL,
    `created_at` DATETIME NOT NULL,
    `is_taken` TINYINT(1) NOT NULL DEFAULT 0,
    `error` TINYINT(1) NOT NULL DEFAULT 0,
    PRIMARY KEY (`id`))
  ENGINE = InnoDB;

在队列中添加一个任务

...
use CodeigniterExt\Queue\Queue;
use CodeigniterExt\Queue\Task;
...

$queue = new Queue();

$task = new Task;

$task
    ->setName('App/Controllers/SendMail')
    ->setData(
        array(
            'to'        => 'example@domain.com',
            'from'      => 'your@email.com',
            'subject'   => 'Hi!',
            'text'      => 'It is your faithful Queue!'
        )
    )
    ->setPriority(Task::PRIORITY_NORMAL);

// Queue it
$queue->addTask($task);

运行工作进程

php spark queue:work

为了使队列:work 进程永久在后台运行,您应该使用进程监控工具,例如 Supervisor,以确保队列工作进程不会停止运行。

灵感来自 anorgan/QuTee(PHP 背景任务(作业)管理器)