一 修改.env文件
默认是 sync 意思是同步的意思 更多是在测试环境使用 能立即看到效果 除此之外还有 database, redis, beanstalkd, sqs
我们使用多是sync,database,redis
查资料显示:beanstalkd 是一个专业队列驱动器 sqs是国外第三方队列服务
这里我们演示的是database这种 所有这里填写database
二 生成任务类
使用artisan命令 php artisan make:job 自己定义的名字(我写的demo)
php artisan make:job demo
然后会在app/Jobs文件夹下形成 任务类文件
在app/job.demp.php的handle文件中写入实际操作
/**
* Execute the job.
*
* @return void
*/ 队列实际的操作
public function handle($id)
{
Db::table('user')->where(['id'=>$id])->update(['age'=>1]);
}
三 生成队列所需的表
php artisan queue:table
执行上面的命令会生成两个表
一个是 job 表 一个是 fail_job 表 job表记录的是队列的数据 fail_job记录的是队列执行错误时的一些报错数据
四 .队列数据的加入
在要操作的地方加入这行操作 调用你的类文件 当你访问这个方法时 数据库job表里会添加一行数据进去,你访问一次这个方法就加入一次
//加入队列 接口处调用 加入队列后续自己处理 delay延迟处理时间
\App\Jobs\demo::dispatch($this->model->find($user->id));
这一行就是你访问一次之后加入的数据
五. 运行队列
php artisan queue:work
执行了之后就会启用你的队列 黄色的是代表正在执行 绿色表示执行成功了 每执行成功一条数据 就会产生这样两句话
以上是laravel关于使用database做队列存储的全部内容
注意 : 队列中的代码有时候执行错误会直降讲队列关闭掉,所有我们实际情况使用中记得开启守护进程守护队列 代码里也要劲量将容易导致队列因错误而关闭的地方做好判断