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

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();//失败记得做个记录,方法自己写

        }

    }

}

大功告成!!!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容