subscribe延时订阅失败

奔跑的蜗牛

截图
截图
功能逻辑是点击预约按钮延时通知客户端
为什么总是时而好使时而不好使呢,哪位大神可以帮我看看么

960 2 0
2个回答

Tinywan

订阅

public function onWorkerStart(Worker $worker)
{
    $redis = new \Workerman\Redis\Client('redis://127.0.0.1:6379');
    $redis->auth('123456');
    $redis->subscribe('resty',function ($channel, $message){
        echo ' [x] ' . $channel.'|'.$message, "\n";
    });
}

发布

public function publish()
{
    $redis = new \Workerman\Redis\Client('redis://127.0.0.1:6379');
    $redis->auth('123456');
    $redis->publish('resty','Welcome Tinywan publish '.date('Y-m-d H:i:s'));
}

订阅截图

截图

  • 奔跑的蜗牛 2022-04-25

    看明白了,你这个是文档上那个异步redis吧,但是怎么延时呀

  • Tinywan 2022-04-25

    workerman/crontab 这个扩展

  • 奔跑的蜗牛 2022-04-25
               //用户发过来消息5分钟后执行预约通知
                $client = new Client('redis://127.0.0.1:6379');
                $client->send('chat',json_encode($chat_arr),300);
  • 奔跑的蜗牛 2022-04-25

    麻烦具体在问问你,crontab应该怎么写没用过

six

估计是业务逻辑问题。延迟消费要用队列,用这个 https://www.workerman.net/doc/workerman/components/workerman-redis-queue.html

先直接用手册里的测试例子测试,不加业务逻辑。测试没问题然后再一点一点加你的业务逻辑,这样好定位。

  • 奔跑的蜗牛 2022-04-25

    我用的就是这个呀,这个问题已经困扰我好多天了

  • 奔跑的蜗牛 2022-04-25

    想实现的功能其实很简单,用户点击一个按钮发起预约,onMessage接收他的用户信息后,来实现5分钟,10分钟各推一条预约通知提醒消息

  • six 2022-04-25

    记录日志看下,哪里执行哪里没执行。别人美环境没代码不好定位你那句代码有问题

年代过于久远,无法发表回答
🔝