定时器配合redis入队列问题

奔跑的蜗牛

截图
截图
定时器是每隔1秒运行,为什么就入了一次队列后就不执行了,麻烦walkor帮忙看下新手感谢

1309 1 0
1个回答

walkor 打赏

Redis扩展是阻塞式调用的,如果业务一直阻塞在某个redis调用并且一直不返回,或者说业务代码一直占用进程控制权,workerman内核就得不到进程运行的控制权,就无法执行定时器。
如果你需要redis队列,可以直接用 https://www.workerman.net/doc/workerman/components/workerman-redis-queue.html

  • 奔跑的蜗牛 2022-04-24
    public static function onWorkerStart()
    {
        #订阅通知
        $client = new Client('redis://127.0.0.1:6379');
        $client->subscribe('chat_yuyue', function($value){
            if($value){
                $self = new self();
                $self->redis_yuyue($value);
            }
        });
    
        $client->subscribe('chat', function($value){
            $self = new self();
            $self->redis_timeout($value);
        });
    }
  • 奔跑的蜗牛 2022-04-24

    这样写可以么

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