参考文档: https://laravelacademy.org/post/6922.html
1.
数据库
如果要使用 database
队列驱动,你需要数据表保存任务信息。要生成创建这些表的迁移,可以运行 Artisan 命令 queue:table
,迁移被创建之后,可以使用 migrate
命令生成这些表:
php artisan queue:table
php artisan migrate
如果报错,请查找database/migration文件夹
2.
Redis
要使用 redis
队列驱动,需要在配置文件 config/database.php
中配置 Redis 数据库连接。
如果 Redis 队列连接使用 Redis Cluster(集群),队列名称必须包含 key hash tag,以确保给定队列对应的所有 Redis keys 都存放到同一个 hash slot:
'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => '{default}', 'retry_after' => 90, ],
3.
创建任务
生成任务类
通常,所有的任务类都保存在 app/Jobs
目录.如果 app/Jobs
不存在,在运行 Artisan 命令 make:job
的时候,它将会自动创建。你可以通过 Artisan CLI 来生成队列任务类:
php artisan make:job SendReminderEmail
生成的类都实现了 Illuminate\Contracts\Queue\ShouldQueue
接口, 告诉 Laravel 将该任务推送到队列,而不是立即运行。
4、分发任务
创建好任务类后,就可以通过辅助函数 dispatch
将其分发到队列。辅助函数 dispatch
需要的唯一参数就是该任务的实例:
5.使用函数来调用队列
php artisan queue:work