最近因为项目需求接触了下larave
中的队列 感觉蛮有意思的写个总结
配置文件
Laravel中关于队列的配置文件在config/queue.php
文件中 主要支持的驱动有 同步、数据库、beanstalkd、sqs、redis
下面介绍下我主要使用的数据库驱动模式 后续redis在研究
通过配置文件中可以看到默认使用的是配置文件中的QUEUE_DRIVER
变量来定义使用队列驱动的 首先修改.env
配置文件中的QUEUE_DRIVER
的值为database
生成相关数据表
因为使用的是数据库驱动模式 所以需要一些表 可以使用如下命令
|
|
运行后大概内容 其实就是将要生成的表结构 最后会在数据库生成一个 jobs 表 或者你也可以自己新建一个jobs表 表结构如下就好了
编写任务类
注意队列的任务类都是放在
app/Jobs
目录下的
你可以使用artisan命令来生成也可以自己手写
|
|
比如新建一个 TestJob的任务类
|
|
把任务添加到队列
由于默认的控制器 app/Http/Controllers/Controller
中使用了 DispatchesJobs
这个 Trait 这个里面提供了一些操作方法 可以让你把任务添加到队列 dispatch
如果你在 Controller 中需要添加队列 可以直接使用(ps:要继承基础的 controller类) 如果你在别的地方需要添加到对垒 需要引入 use Illuminate\Foundation\Bus\DispatchesJobs;
下面新建一个testcontroller测试下
如果添加成功的话在数据库中的 jobs 表中会看到记录
执行队列
可以使用命令
|
|
运行完控制台会有输出 并且数据库的那条对应记录会没有
具体的详细用法可以参考官网的这个地址 Laravel Queue 或者 laravel学院