小白兔晒黑了

导航

 

Laravel队列服务为各种不同的后台队列提供了统一的api。例如:允许推迟耗时任务(例如发送邮件)的执行,从而大幅提高web请求速度、

步骤:

1 迁移队列需要的数据表

2 编写任务类

3 推送任务到队列

4 运行队列监听器

5 处理失败的任务

使用:

1 配置

\config\queue.php

支持的驱动类型:
 "sync", 同步驱动
 "database",数据库驱动
 "beanstalkd",
 "sqs",
 "redis",
 "null"

失败配置:

'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database'),
        'database' => env('DB_CONNECTION', 'mysql'),
        'table' => 'failed_jobs',
    ],
QUEUE_CONNECTION=database

2 创建迁移

php artisan queue:table

生成了一个迁移

3 执行迁移

php artisan migrate

4 创建任务

php artisan make:job SendEmail

5 任务代码

5.1 job
app\Jobs\SendEmail.php
<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Mail;

class SendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $email;
    protected $subject;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($email,$subject)
    {
        //
        $this->email = $email;
        $this->subject = $subject;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
        Mail::raw('队列测试',function ($message){
            $message
                ->to($this->email)
                ->subject($this->subject);
        });
    }
}
View Code

 

5.2 控制器调用
\app\Http\Controllers\StudentController.php
use Log;
 public function queque()
    {
        $this->dispatch(new SendEmail('777777777@qq.com','队列测试'));
    }

 

调用以后会在数据库里发现一行:

 6 执行

php artisan queue:listen

 

执行成功

只要一直保持Listen状态

再访问一下queque页面 又会执行一条。

ps:执行完毕后,job表会被清空

处理失败任务

查看失败任务:
php artisan queue:failed

 重新执行第1个任务
php artisan queue:retry 1

 重新执行所有任务
php artisan queue:retry all

 

如果执行成功,会在failed表里删除

不想执行失败的队列了

根据id号删除

php artisan queue:forget 2

删除全部

php artisan queue:flush

 

posted on 2020-07-30 20:26  小白兔晒黑了  阅读(196)  评论(0编辑  收藏  举报