jellelampaert/ci4_queue

CodeIgniter4 队列系统

v0.1 2022-02-02 22:22 UTC

This package is auto-updated.

Last update: 2024-09-29 06:03:17 UTC


README

将依赖于外部服务(如电子邮件)的任务放入数据库中。异步处理队列(即通过使用cronjob),以便用户不必等待该服务的响应。

安装

通过Composer安装该包。

在终端运行Composer require命令

composer require jellelampaert/ci4_queue

安装完成后,请确保您的数据库设置正确,并运行迁移

php spark migrate -all

使用方法

如何加载库

$queue = new \jellelampaert\ci4_queue\Queue();
$queue->queue('email')->add(array(
    'to'        => 'test@example.com',
    'subject'   => 'This is a test',
    'message'   => 'Testing, attention please'
));

队列系统有以下方法

Queue::queue($queue)

定义您想要使用的队列。您的应用程序可以有不同的队列,例如电子邮件队列、webhook队列等。

Queue::add($data)

将任务添加到队列中。参数可以是任何东西:数字、字符串、数组、对象等。请确保首先定义一个队列名称。

$queue = new Queue();
$queue->queue('email')->add(array(
    'to'        => 'test@example.com',
    'subject'   => 'This is a test',
    'message'   => 'Testing, attention please'
));

Queue::clean($hours)

删除所有超过x小时之前已处理过的队列任务。

$queue = new Queue();
$queue->queue('email')->clean(24);

Queue::cleanAll($hours)

删除所有队列中超过x小时之前已处理过的任务。

$queue = new Queue();
$queue->cleanAll(24);

Queue::delete($id)

从数据库中删除一个任务。

$queue = new Queue();
$queue->delete(1);

Queue::getAllTasks()

获取队列中的所有任务,无论它们是否已处理。

$queue = new Queue();
$queue->queue('email')->getAllTasks();

Queue::getAllUnprocessed()

从数据库中的每个队列中获取所有未处理的任务。

$queue = new Queue();
$queue->getAllUnprocessed();

Queue::getTask($id)

通过ID获取一个任务。

$queue = new Queue();
$queue->getTask(1);

Queue::getUnprocessed()

从一个队列中获取所有未处理的任务。

$queue = new Queue();
$queue->queue('email')->getUnprocessed();

Queue::setProcessed($id)

将任务设置为已处理。

$queue = new Queue();
$queue->queue('email')->setProcessed(1);

Queue::setResponse($id, $data)

设置任务的响应。这可以用于记录或调试目的。

$queue = new Queue();
$queue->setResponse(1, 'HTTP Error 404');

许可证

此软件包是免费软件,根据MIT许可证条款分发。