laravel - php 后台怎么开一个进程监听Redis的队列消息呢?用while?
怪我咯
怪我咯 2017-04-10 18:05:25
[PHP讨论组]

我知道Redis的list有pub/sub模式,但是php 后台怎么开一个进程监听Redis的队列消息呢?用while循环吗?这样是不是不太好

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(7)
大家讲道理
while($res = Redis::blpop($key)) {
    doJob($res);
}
高洛峰

Redis有阻塞原语读取队列,队列没有数据时,php监听进程会挂起

阿神
while + sleep 没啥问题
PHP中文网

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
  ]);
}
ringa_lee

通过pcntl_fork系列方法开启守护进程,监听请求。
redis队列有操作是发送请求到监听端口,同时处理历史失败消息队列。

PHPz

谢邀。我没做过相关的实践。
刚搜了下:使用resque比较多
1)http://www.cnblogs.com/zl0372/p/3696641.html
2)http://avnpc.com/pages/run-background-task-by-php-resque
希望对你有所帮助

PHP中文网

在服务器后台挂个进程去监控就好,supervisor,就算挂了也会自动重启

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号