laravel - php 后台怎么开一个进程监听Redis的队列消息呢?用while?

 用户x735b8j5iu 发布于 2022-11-30 17:01

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

7 个回答
  • while($res = Redis::blpop($key)) {
        doJob($res);
    }
    2022-11-30 17:43 回答
  • Redis有阻塞原语读取队列,队列没有数据时,php监听进程会挂起

    2022-11-30 17:43 回答
  • while + sleep 没啥问题
    2022-11-30 17:43 回答
  • 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
      ]);
    }
    2022-11-30 17:43 回答
  • 通过pcntl_fork系列方法开启守护进程,监听请求。
    redis队列有操作是发送请求到监听端口,同时处理历史失败消息队列。

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

    2022-11-30 17:43 回答
  • 在服务器后台挂个进程去监控就好,supervisor,就算挂了也会自动重启

    2022-11-30 17:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有