用php-redis给全部用户发送邮件,数据量很大,思路应该是什么样的

(亚洲博彩十大网站排名)

目前做的有点懵。

在php代码里把所有需要请求接口的数组都放进redis 存储里面,
然后用循环把数组brpop出来,但是这个过程不都是靠php代码来执行的吗?

php超时之后整个进程还不是得断掉?

楼上正解。
这么打比方吧。 Redis是一个数据池,A和B都可以连接它,其中A就是你的当前任务,它只负责写入到Redis,而B是另一个任务(比如查尔斯说的命令行的方式启动一个死循环脚本)它只负责查询/删除Redis中的邮件数据。

死循环脚本伪码:

set_timelimit0;//让这个PHP程序可以无限时的执行
whiletrue { $row = $redisInstance->shiftGroupEmail;//所有要发送的邮件是一个数组的话,取出第一个 if empty$row { sleep1;//休息1秒 continue; } SendMail$row;
}

启动一个php脚本,命令行运行

你可以利用Redis的Pub/Sub机制,利用NodeJS建立一个简单的消息队列。

redis.subscribeemail,sms,push,function err,count { }; redis.onmessage,function chan,msg { //处理要发送的消息
};

发表评论

电子邮件地址不会被公开。 必填项已用*标注