用supervisorctl 常驻进程工具 监听redis 过期key 处理消息订阅
框架使用: laravel 5.8
首先在 database.php 文件里配置redis publisher 频道订阅监听
使用需求:由于项目服务器里使用php artisan redis:action subscribe & 进程无法在linux常驻监听redis订阅消息(访问频道总是不在同一个进程中,且每次打开小黑窗,频道都不同,不知道为啥)
于是使用supervisor 常驻内存工具 (一般用来做队列监听)做消息订阅。(来监听我的redis key值过期)
注意:修改了redis代码需要重启redis 之后也需要重启supervisor
重启supervisor步骤:
-
重启redis(我宝塔直接重启redis)
-
查看管理进程的状态 supervisorctl status
-
里面可以看到subscribe RUNNING的状态
-
stop掉 superivisor 里面的进程
-
停止语句 supervisorctl stop subscribe
-
再次查看状态
-
可以看到STOPPED了
-
此时可以关闭supervisor
ps -ef | grep super,然后kill -9 杀进程 -
重新启动supervisor
supervisord -c /etc/supervisord.conf
使用superivisor之后无需再执行 php artisan redis:action subscribe & 语句
注意:如果supervisorctl 错误关闭,会导致多个进程监听。此时会监听到多次,如果监听处有处理逻辑,可能会触发多次处理,出现BUG。
处理方式:从步骤5开始,先stop所有,然后kill掉 再启动一个。如果没有效果建议从重启redis步骤开始