关于在gateway中使用redis的问题

unsco

我在ubuntu14.01下用gateway调用redis,总是发生一些奇怪的问题
图一是在php中读取redis的结果,图二是在redis中的结果
而且经常会报 'RedisException' with message 'read error on connection' ,我也修改过php.ini,redis.conf中timeout值也为0.

我直接调用$redis->connect(),则不会发生这些问题

,源代码如下:

<?php
use \GatewayWorker\Lib\Gateway ;
use \GatewayWorker\Lib\Store ;
class Event
{
        public static function onConnect($client_id)
        {
                 $store = Store::instance("robot") ;
                $store->hSet( 'clientRBlist' , $client_id , 0 ) ;             
        }
       public static function onMessage($client_id, $message)
       {              
                $data = json_decode( $message ,true ) ;
                if( $data  == 'ROBOT' )
                {
                        if( $data  == 'REGIST' )
                        {
                                self::robRegist( $client_id , $data ) ;
                        }             
                }
        }      
       public static function onClose($client_id)
       {
                $store = Store::instance("robot") ;
                //$clientRB = $store->hGetAll( 'clientRBlist') ;
                //print_r($clientRB) ;
                echo("*****".$client_id."--");
                $client_type = $store->hGet( "clientRBlist" , $client_id ) ;
                echo($client_type."\n") ;
       }
       public function robRegist( $client_id , $data ) 
       {
                $store = Store::instance("robot") ;
                $store->hSet( 'clientRBlist' , $client_id , 'ROB' ) ;
                Gateway::sendToClient( $client_id , '{"infomation":"Welcome","robotconnected":1}' ) ;
       }
}

请问这个该怎么办?

7266 2 0
2个回答

aguai

程序里已经反序列化的内容,client中取的是未反序列化的。你程序中的值是对的就行了。

  • 暂无评论
unsco

在程序中取得的并非正确的值,请注意client_id为470时,redis中为ROB,而程序中取得的是+PONG,显然有问题

  • 暂无评论
年代过于久远,无法发表回答
🔝