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

这样就可以开启守护进程了,大佬们如果有更好的方案,请多指教!!!!!!!

上一篇 下一篇

猜你喜欢

热点阅读