php使用Redis做消息队列并且守护开启
2023-06-14 本文已影响0人
风度翩翩的程序猿
总所周知,redis是作为缓存性数据库,性能非常高,写入速度快,那么用redis做消息队列如何呢?
新建一个php文件 redismq.php
首先咱们链接redis
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$redis->auth('密码');
// 咱们用redis的list数据类型,lpush命令作为生产者
$redis->lpush('order','values');
// 然后咱们的消费者进行消费 看以下代码
while(true){
$data = $redis->brPop('order',1);
if(!empty($data)){
// 进行消费
}
sleep(0.2);
}
一个简单的redis消息列队就完成了,注意咱们需要在终端执行redismq.php文件
那么问题来了,每次关闭终端的话,脚本执行就失效了,因为咱们需要守护开启进程
我这边使用的是Linux的systemd开启守护进程
这边介绍如下:
systemd是一个Linux系统的守护进程和服务管理器。下面是一些使用systemd的基本操作:
咱们新建一个unit文件,
// 文件内容开始
[Unit]
Description=My PHP Service
After=network.target
[Service]
ExecStart=/usr/bin/php /path/to/your/php/file.php
Restart=always
[Install]
WantedBy=default.target
// 文件内容结束
/path/to/your/php/file.php 更换成你的redismq.php文件路径
命令如下:
启动、停止和重启服务:
启动服务:sudo systemctl start <service>
停止服务:sudo systemctl stop <service>
重启服务:sudo systemctl restart <service>
查看服务状态:
查看单个服务状态:sudo systemctl status <service>
查看所有服务状态:sudo systemctl list-units --type=service
开机自启动:
启用开机自启动:sudo systemctl enable <service>
禁用开机自启动:sudo systemctl disable <service>
查看日志:
查看特定服务的日志:sudo journalctl -u <service>
查看系统日志:sudo journalctl
其他常用命令:
查看已加载的单元列表:sudo systemctl list-unit-files
重新加载配置:sudo systemctl daemon-reload
显示服务所在的单元文件:sudo systemctl show <service> -p FragmentPath
请注意,<service>应替换为你要操作的具体服务的名称。上述命令需要以root或拥有sudo权限的用户身份运行。
1686810708405.jpg
这样就可以开启守护进程了,大佬们如果有更好的方案,请多指教!!!!!!!