phpredis 嵌套消息队列的方法

phpredis 嵌套消息队列的方法

   public function testxiaoxiduilie()
    {
        $redis = \RedisClient::getInstance();
        $redis->flushall();
        $key1 = "duilieitem1";
        $redis->Lpush($key1, 'ccc1');
        $redis->Lpush($key1, 'ccc2');
        $redis->Lpush($key1, 'ccc3');

        $key2 = "duilieitem2";
        $redis->Lpush($key2, 'ccc4');
        $redis->Lpush($key2, 'ccc5');
        $redis->Lpush($key2, 'ccc6');
        $redis->Lpush($key2, 'ccc7');

        $key   = "duilie";
        $rpopv = $redis->Lpush($key, $key1);
        $rpopv = $redis->Lpush($key, $key2);
    }

递归函数一定要注意 变量要释放!!!

   public function duquduilie1()
    {
        $redis = \RedisClient::getInstance();
        $key   = "duilie";

        $rpopv = $redis->rPop($key);

        if (empty($rpopv)) {

            exit();
            // 如果为空就
            //
            usleep(200000);
            $this->duquduilie1();
        } else {

            //如果取到了
            while (1) {
                $duilieitme = $redis->rPop($rpopv);
                if (!empty($duilieitme)) {

                    echo '取出duilieitem:' . $duilieitme;
                    echo '</br>';
                    if (0) {

                        //如果这里出现错误 这个地方需要中断的
                        $redis->del($rpopv);

                        break;
                    }
                } else {
                    break;
                }
            }
            $this->duquduilie1();
        }
    }

    public function duquduilie()
    {
        // CLI模式下 配置文件不走过期时间 但是 内存限制还是会走配置文件
        ini_set("memory_limit", "1026M");
        ob_end_clean();
        ob_implicit_flush(1);
        $this->testxiaoxiduilie();
        $this->duquduilie1();
    }

 

posted @ 2020-11-25 12:17  newmiracle宇宙  阅读(145)  评论(0编辑  收藏  举报