YMQOAuthTokenSetData.class.php 4.24 KB
<?php
require_once dirname(__FILE__). '/YMQOAuthTokenRedisHelper.class.php';

/**
 * 存放访问令牌到Redis的操作类
 */
class YMQOAuthTokenSetData
{
    /**
     * 存放Redis对象
     * @var object
     */
    private static $redis;
    
    /**
     * 创建 Redis 对象
     */
    private static function _createRedis()
    {
        if (!isset(self::$redis))
        {
            self::$redis = new YMQOAuthTokenRedisHelper();
        }
        else
        {
            // 测试此处有 socket 过期现象
            $ping = @self::$redis->mRedis->ping();
            
            // 判断连接是否断开
            if ($ping != '+PONG')
            {
                self::$redis = new YMQOAuthTokenRedisHelper();
            }
        }
    }
    
    /**
     * 存令牌数据到Redis
     * [老方法, 已不再使用]
     * 
     * @param string $token  存放键名: 唯一的访问令牌
     * @param string $value  存放键值: 存放的令牌数据
     * @param int    $expire 令牌的使用周期
     * @return void
     * @example 
     * YMQOAuthTokenSetData::set("e434b93937v", '{"clientId":"3dfe9ydg8","scope":null}', 3600);
     */
    public static function set($token, $data, $expire = YMQ_OAUTH_TOKEN_EXPIRED)
    {
        self::_createRedis();
        // 设置值
        self::$redis->mRedis->set(strval($token), $data);
        
        // 设置过期时间
        self::$redis->mRedis->setTimeout(strval($token), $expire);
    }
    
    /**
     * 更新Redis中的令牌数据
     * [老方法, 已不再使用]
     * 
     * @param string $token  存放键名: 唯一的访问令牌
     * @param string $value  存放键值: 存放的令牌数据
     * @param int    $expire 令牌的使用周期
     * @return void
     * @example 
     * YMQOAuthTokenSetData::update("e434b93937v", '{"clientId":"3dfe9ydg8","scope":null}', 3600);
     */
    public static function update($token, $data, $expire = YMQ_OAUTH_TOKEN_EXPIRED)
    {   
        // 删除指定的数据
        self::delete(strval($token));
        // 存放新的数据
        self::set(strval($token), $data);
        
        // 设置过期时间
        self::$redis->mRedis->setTimeout(strval($token), $expire);
    }
    
    /**
     * 删除指定键名存放在Redis中的数据
     * [老方法, 已不再使用]
     * 
     * @param string $token 存放键名: 唯一的访问令牌
     * @return void
     * @example 
     * YMQOAuthTokenSetData::delete("e434b93937v");
     */
    public static function delete($token)
    {
        self::_createRedis();
        self::$redis->mRedis->delete(strval($token));
    }
    
    /**
     * 设置过期时间
     * 
     * @param string $key  存放的键名
     * @param string $expire 过期时间
     * @return void
     * @example
     * YMQOAuthTokenSetData::setTimeout("e434b93937v", 60);
     */
    public static function setTimeout($key, $expire = YMQ_OAUTH_TOKEN_EXPIRED)
    {
        self::_createRedis();
        // 设置值
        self::$redis->mRedis->set(strval($key), self::$redis->mRedis->get(strval($key)));
        // 设置过期时间
        self::$redis->mRedis->setTimeout(strval($key), $expire);
    }
    
    /**
     * Hash 操作: 存数据到Redis
     * 
     * @param string $userId 存放键名: 唯一的用户ID号
     * @param string $appId  存放域: 唯一的应用ID号
     * @param string $value  存放值: 存放的数据
     * @param int    $expire 存放有效周期
     * @return void
     * @example 
     * YMQOAuthTokenSetData::set('102030', '1000000', 'e434b93937v', '3600');
     */
    public static function hSet($userId, $appId, $data)
    {
        self::_createRedis();
        // 添加一个值 到hash中,如果这个值存在hash中 ,返回false
        self::$redis->mRedis->hSet(strval($userId), strval($appId), $data);
    }
    
    /**
     * Hash 操作: 删除用户的应用授权
     * 
     * @param string $userId 存放的键名
     * @param string $appId 存放的域
     * @return void
     * @example
     * YMQOAuthTokenSetData::hDel('102030', '1000000');
     */
    public static function hDel($userId, $appId)
    {
        self::_createRedis();
        // 移除哈希对应键
        self::$redis->mRedis->hDel(strval($userId), strval($appId));
    }
}
?>