使用Database队列驱动
- 创建一张数据表来存储任务
php artisan queue:table
php artisan migrate
- 在env文件中配置
QUEUE_CONNECTION=database
- 创建任务类
php artisan make:job TranslateJob
- 在任务类中编写逻辑
public function handle()
{
echo time();
}
- 再需要执行任务的地方,将任务推送到队列中
TranslateJob::dispatch();
// 或者延迟分发
StandardJob::dispatch()->delay(now()->addMinutes(5));
- 启动队列处理器
// --tries=3 最大尝试次数
php artisan queue:work --queue=TranslateJob --tries=3
// 测试监听
php artisan queue:listen
// linux
nohup php artisan queue:listen &
消息队列参数传递
// 定义接收的参数
class ProcessExample implements ShouldQueue
{
public $param1;
public $param2;
public function __construct($param1, $param2)
{
$this->param1 = $param1;
$this->param2 = $param2;
}
public function handle()
{
// 处理任务的逻辑
}
}
// 传递参数
ProcessExample::dispatch($param1, $param2);
或
ProcessExample::dispatch()->with(['param1' => $param1, 'param2' => $param2]);