8.laravel 队列

本文介绍了如何在Laravel中配置Redis驱动来实现队列任务,包括修改.env文件设置、创建任务类、定义业务逻辑、分发任务及启动队列监听。通过示例展示了SendReminderEmail任务的创建和执行过程,强调了Redis队列的60秒超时特性。
摘要由CSDN通过智能技术生成

laravel官网地址:https://learnku.com/docs/laravel/5.5/queues/1324

写之前先确保自己的本地redis是开启的状态。不然会报连接失败的。

一、驱动

队列里面有两种驱动:数据库与redis,以前项目里面用到过数据库的,那这次咱们换redis的驱动

1.在.env里面把QUEUE_DRIVER设置是为redis就可以了

在这里插入图片描述

2.redis的配置

在这里插入图片描述

二、创建任务

1.生成任务类

php artisan make:job SendReminderEmail

在这里插入图片描述
执行完上面的命令行以后,目录里自动创建一个SendReminderEmail的任务类
在这里插入图片描述

2. 业务逻辑

不管是发送邮件也好,或者是处理订单也好,都会带一个参数过来,那咱们就简单的带一个参数过来,然后看一下打印得到结果

<?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;
use Exception;

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

    protected $param;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(Array $array)
    {
        $this->param = $array;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        info("我是一个任务类,执行队列里面的内容====================", [$this->param]);
    }

    /**
     * 要处理的失败任务。
     *
     * @param  Exception  $exception
     * @return void
     */
    public function failed(Exception $exception)
    {
        // 给用户发送失败通知,等等...
        info("队列异常".get_class($this).':'.__FILE__.':', [$exception]);
    }
}

3.分发任务

SendReminderEmail::dispatch(["order_no"=>"1111111"]);

4.开启队列监听

php artisan queue:work --tries=3

在这里插入图片描述

5.执行分发任务

在这里插入图片描述
看一眼最后的打印结果,棒棒哒的,一个简单的队列就完成了,其实很简单的,大家一起加油……

注意
Redis 里面一个任务默认最多执行60秒,如果一个任务60秒没有执行完毕,会继续放回到队列中,循环执行,那酸爽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值