ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
> 插件说明:基于think-queue的队列插件 **一般使用场景常见于批量发送邮箱和短信,订单提交30分钟后检查是否提交等等** 1.安装后配置文件在`\application\config\queue.php`,默认使用`redis`驱动 ***** 2.队列任务请写在`addons\queue\jobs`目录下,具体逻辑参考`DemoJob.php` ***** 3.在需要使用队列的控制器加入以下代码,即可将`DemoJob.php`的`fire`方法加入队列 ``` $jobData = ['ts' => time(), 'bizId' => uniqid(), 'a' => 1];//当前任务所需的业务数据 $isPushed = \think\Queue::push('addons\queue\jobs\DemoJob', $jobData);//没有@使用默认方法fire,此方法为立即执行 //$isPushed = \think\Queue::push('addons\queue\jobs\DemoJob@taskA', $jobData);//使用方法taskA,放@后面 //$isPushed = \think\Queue::push('addons\queue\jobs\DemoJob@taskB', $jobData);//使用方法taskB,放@后面 //$isPushed = \think\Queue::later(60,'addons\queue\jobs\DemoJob', $jobData);//此方法延迟60秒执行 if ($isPushed !== false) { echo "ok"; } else { echo 'warn'; } ``` 以上使用`php think queue:listen`监听所有默认队列,你也可以起队列名,如: ``` $isPushed = \think\Queue::push('addons\queue\jobs\DemoJob', $jobData,'helloJobQueue'); ``` 则使用`php think queue:listen --queue helloJobQueue`监听 ***** 4.最后使用命令行的说明(使用`Supervisor`添加守护进程) | 命令 | 描述 | | --- | --- | | php think queue:work | 监听队列 | | php think queue:listen | 监听队列 | | php think queue:restart | 重启队列 | 如宝塔可以直接安装**进程守护管理器** ![](https://img.kancloud.cn/29/34/2934eca69ec8df83b9671d1349e01494_943x210.png) 命令参数 | 参数 | 默认值 | 可以使用的模式| 描述 | | --- | --- | --- | --- | | --queue | null | work,listen | 监听的队列的名称 | | --daemon | null | work| 是否循环执行,如果不加该参数,则该命令处理完下一个消息就退出 | | --delay | 0 | work,listen| 如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0 | | --force | null | work | 系统处于维护状态时是否仍然处理任务 | | --memory | 128 | work,listen| 该进程允许使用的内存上限,以 M 为单位 | | --sleep | 3 | work,listen| 如果队列中无任务,则sleep多少秒后重新检查(work+daemon模式)或者退出(listen或非daemon模式) | | --tries | 0 |work,listen | 如果任务已经超过重发次数上限,则进入失败处理逻辑,默认为0 | |--timeout|60|listen|进程允许执行的最长时间,以秒为单位|