官方文档 队列 |《Laravel 5.4 中文文档 5.4》| Laravel China 社区
1. 在控制器内将将要执行的操作参数入列,入列的队列名,是要执行的文件,与类名一样,大写转小写,单词间用下划线分隔
// 参数1 参数2 对应的队列名称(类名) 执行时间 我这里是在现在的基础上延迟3秒执行
dispatch((new LuckDrawGivePrize($userId, $prize))->onQueue('luck_draw_give_prize')->delay(Carbon::now()->addSeconds(3)));
2.队列执行文件写逻辑路径 /app/Jobs/
<?php
namespace App\Jobs;
use App\Jobs\Job;
class LuckDrawGivePrize extends Job
{
// 文件名 LuckDrawGivePrize.php
private $userId;
private $prize;
/*
* 构造方法接参,并赋值到常量当中
*/
public function __construct($userId, $prize)
{
$this->userId = $userId;
$this->prize = $prize;
}
/*
* handle 方法执行操作
*/
public function handle()
{
info('LuckDrawGivePrize', ['status' => '1', 'msg' => '队列 开始', 'param' => [
'userId' => $this->userId
]]); // 记录开始日志
// 写逻辑
info('LuckDrawGivePrize', ['status' => '1', 'msg' => '队列 结束', 'param' => [
'userId' => $this->userId
]]); // 记录结束日志
}
}
3.服务器上手动监听队列,项目根目录下执行以下命令(不是public/下)
// 队列名,换成你自己的
php artisan queue:work redis --queue=luck_draw_give_prize
##当有新的队列或队列做出修改需要重启队列,项目根目录下执行以下命令(不是public/下)##
php artisan queue:restart
执行所有队列
php artisan queue:work