jellelampaert / ci4_queue
CodeIgniter4 队列系统
v0.1
2022-02-02 22:22 UTC
Requires
- php: ^7.3 || ^8.0
- codeigniter4/framework: ^4.1
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许可证条款分发。