原文链接:https://blog.csdn.net/qq_39337886/article/details/82024081
//修改.env配置文件
QUEUE_DRIVER=database
迁移队列需要数据表
命令行创建任务类
php artisan make:job SendEmail
编写任务类
//app/jobs
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:listen
监听然后推送队列
执行的是在日志中写信息
写成功
处理失败任务
//迁移失败表
php artisan queue:failed-table
php artisan migrate
队列执行错误
–tries 如果没有指定 –tries 的值,任务将会被无限次尝试。
php artisan queue:listen --tries=1
查看错误的队列
php artisan queue:failed
重新执行队列
php artisan queue:retry 1
然后去监听队列看
重新执行后队列执行失败 (注意Id变化 之前为1现在1没了新添加了新的错误队列)
重新执行所有的
php artisan queue:retry all
执行失败(故意让执行失败的)
删除错误队列