扫码关注官方订阅号
我知道Redis的list有pub/sub模式,但是php 后台怎么开一个进程监听Redis的队列消息呢?用while循环吗?这样是不是不太好
走同样的路,发现不同的人生
while($res = Redis::blpop($key)) { doJob($res); }
Redis有阻塞原语读取队列,队列没有数据时,php监听进程会挂起
while + sleep 没啥问题
redis的subscribe用pconnect链接,执行这个脚本的进程会自动监听所订阅的频道发送的消息
ini_set(‘default_socket_timeout’, -1); $redis = new \Redis(); $redis->pconnect('127.0.0.1', 6379); //订阅 $redis->subscribe(['msg'], 'callfun'); function callfun($redis, $channel, $msg) { var_dump([ 'redis' => $redis, 'channel' => $channel, 'msg' => $msg ]); }
通过pcntl_fork系列方法开启守护进程,监听请求。redis队列有操作是发送请求到监听端口,同时处理历史失败消息队列。
谢邀。我没做过相关的实践。刚搜了下:使用resque比较多1)http://www.cnblogs.com/zl0372/p/3696641.html2)http://avnpc.com/pages/run-background-task-by-php-resque希望对你有所帮助
在服务器后台挂个进程去监控就好,supervisor,就算挂了也会自动重启
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
Redis有阻塞原语读取队列,队列没有数据时,php监听进程会挂起
redis的subscribe用pconnect链接,执行这个脚本的进程会自动监听所订阅的频道发送的消息
通过pcntl_fork系列方法开启守护进程,监听请求。
redis队列有操作是发送请求到监听端口,同时处理历史失败消息队列。
谢邀。我没做过相关的实践。
刚搜了下:使用resque比较多
1)http://www.cnblogs.com/zl0372/p/3696641.html
2)http://avnpc.com/pages/run-background-task-by-php-resque
希望对你有所帮助
在服务器后台挂个进程去监控就好,supervisor,就算挂了也会自动重启