//修改.env配置文件
QUEUE_DRIVER=database
迁移队列需要数据表
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CXycGRPNTT61UNNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO2UTMxQDM5EDNygDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
php artisan migrate
命令行创建任务类
编写任务类
//app/jobs
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class SendEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $email;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($email)
{
//
$this->email = $email;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//
//Mail::raw('你好,我是PHP程序!', function ($message) {
// $to = $this->email;
// $message ->to($to)->subject('纯文本信息邮件测试(队列测试)');
//});
Log::info('已发送--'.$this->email);
}
}
编写控制层方法
public function queue(){
//use App\Jobs\SendEmail; 命名空间引入
dispatch(new SendEmail('[email protected]'));
}
执行然后查看数据库
运行队列监听器
监听然后推送队列
执行的是在日志中写信息
写成功
处理失败任务
//迁移失败表
php artisan queue:failed-table
php artisan migrate
队列执行错误
–tries 如果没有指定 –tries 的值,任务将会被无限次尝试。
查看错误的队列
重新执行队列
然后去监听队列看
重新执行后队列执行失败 (注意Id变化 之前为1现在1没了新添加了新的错误队列)
重新执行所有的
执行失败(故意让执行失败的)
删除错误队列
php artisan queue:forget 5
删除所有