美文网首页
Docker下使用redis的队列群发邮件

Docker下使用redis的队列群发邮件

作者: 爱耍流氓的唐僧 | 来源:发表于2020-01-09 17:49 被阅读0次

    1.Docker的安装

    卸载旧版本

    sudo yum remove docker \
    
                      docker-client \
    
                      docker-client-latest \
    
                      docker-common \
    
                      docker-latest \
    
                      docker-latest-logrotate \
    
                      docker-logrotate \
    
                      docker-engine
    
    1. 在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。

    设置仓库需要安装所需要的软件包, yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

    sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
    

    3 使用以下命令来设置稳定的仓库。

    sudo yum-config-manager \
    
        --add-repo \
    
        [https://download.docker.com/linux/centos/docker-ce.repo](https://download.docker.com/linux/centos/docker-ce.repo)
    

    4.设置国内稳定的镜像(3设置失败的话)

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    5.安装Docker Engine-Community

    sudo yum install docker-ce docker-ce-cli containerd.io
    

    6.启动docker

    sudo systemctl start docker
    
    1. 通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
    sudo docker run hello-world
    

    8.安装redis,先看下有哪些版本,也可安装最新的官方版本

    查看有哪些版本

    docker search redis
    

    9.拉取最新版本的Redis镜像

    docker pull redis:latest
    

    10查看本地镜像

    docker images
    

    11.运行容器(映射容器服务的 6379 端口到宿主机的 6379 端口,密码自己设置,这里设置123456)

    docker run --name redisEmail -p 6379:6379 -d --restart=always redis:latest redis-server --appendonly yes --requirepass "123456"
    

    12运行PHP程序(在CI框架下)

    //在你需要群发邮件的位置将群发邮件数据载入redis
    
            $email = json_encode(array(
    
                'to'=>'XXX@XXX.com',
    
                'subject'=>'XXXXX',
    
                'content'=>'XXXX',
    
                'cc'=>array(''),
    
                'reply_to'=>''
    
            ));
    
            $this->redis->lpush('email',$email);
    
    //运行消息队里程序来跑邮件队列
    
    while(true){
    
        $result = $this->redis->brpop('email',0);//返回的数据是一个array 0=>key 1=>value 由于在插入redis之前是json_encode,所以出来的时候记得json_decode
    
        if(!empty($result))
    
        {
    
            $re = json_decode($result[1]);
    
            if($this->sendEmail($re->to,'',$re->subject,$re->content,false,$re->cc,$re->reply_to))
    
            {
    
                action_email_log();//记得做个记录,方法自己写
    
            }
    
            else
    
            {
    
                action_log();//失败记得做个记录,方法自己写
    
            }
    
        }
    
    }
    

    大功告成!!!

    相关文章

      网友评论

          本文标题:Docker下使用redis的队列群发邮件

          本文链接:https://www.haomeiwen.com/subject/ppxuactx.html