codeigniterext / queue
CodeIgniter 4 的队列任务模块
0.0.5
2019-06-29 13:43 UTC
Requires
- symfony/event-dispatcher: ~2.7
README
CodeIgniter 4 的队列任务模块,带有 CLI 持久化器
- Codeigniter
- MySQLi
- PDO
- PostgreSQL
- Oracle
- ODBC
- ....
- PDO(不使用 Codeigniter 模型系统,是自包含的)
- 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 背景任务(作业)管理器)