作为程序员一定要保持良好的睡眠,才能好编程

编写基于Redis的邮件异步发送工具

发布时间:2018-02-24

平时注册用户发送邮件,比如说网络比较慢,那么客户就需要稍等一会,

但是这样呢,用户体验就不是太好,那么我们如何解决呢


截图32.jpg


需要准备的内容:


安装redis服务,linux 安装redis   php支持redis


编写一个插件类

这个类一定要继承 swiftMailer 类,并重写这里的方法



我们在wender下建立一个yii2的邮件类

那么应该怎么做呢?


建立这样一个 vendor/doctorjason/milerqueue/src

文件夹


创建一个类:

class Message extends swiftmailer\Message{
    
    public function queue(){
        
        //把需要发送的邮件存放在redis中
        
        //第一步 检测 redis是否存在,如果不能打开,那么提醒用户 redis error
        
        $redis=MyRedis::getInstance();
        if(empty($redis)){
            
            throw new Exception("redis error");
        
        }
        
        //如果没有配置 swifMailer 或者  redis数据库没有选择成功的话,那么也返回一个错误
        
        
        
        
    }
}


截图35.jpg




截图36.jpg

通过 redis rpush 出入到队列中



好的上边是message类


那么还有一个MailerQueue 这个类,怎么设置嫩?

https://coding.imooc.com/lesson/90.html#mid=2527

class MailerQueue etends yii\swiftMailer\Mailer{

    
    然后进行自己的代码,进行编辑
    

}

截图39.jpg







截图37.jpg

截图38.jpg




建立计划任务定时离线发送队列中的邮件