天天看点

laravel队列应用

//修改.env配置文件
QUEUE_DRIVER=database
           

迁移队列需要数据表

laravel队列应用
php artisan migrate
           
laravel队列应用
laravel队列应用

命令行创建任务类

laravel队列应用
laravel队列应用

编写任务类

//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]'));
    }
           

执行然后查看数据库

laravel队列应用

运行队列监听器

监听然后推送队列

laravel队列应用

执行的是在日志中写信息

laravel队列应用

写成功

处理失败任务

//迁移失败表
php artisan queue:failed-table
php artisan migrate
           
laravel队列应用
laravel队列应用
laravel队列应用

队列执行错误

–tries 如果没有指定 –tries 的值,任务将会被无限次尝试。

laravel队列应用

查看错误的队列

laravel队列应用

重新执行队列

laravel队列应用

然后去监听队列看

laravel队列应用

重新执行后队列执行失败 (注意Id变化 之前为1现在1没了新添加了新的错误队列)

laravel队列应用

重新执行所有的

laravel队列应用

执行失败(故意让执行失败的)

laravel队列应用

删除错误队列

php artisan queue:forget 5
           
laravel队列应用

删除所有

laravel队列应用