使用memcache 替代 session

if (!function_exists('sso_session_id')) {
    $sso_session_id = null;
    /**
     * 设置全局遍历$sso_session_id 作为 session_id的值
     *
     * @param string $id
     * @return void
     * @Description
     * @example
     * @author HappyCrab
     * @since
     */
    function sso_session_id($id = '') {
        global $sso_session_id;
        if($id !='') {
            $sso_session_id = $id;
        } else {
            return $sso_session_id;
        }
    }
}

if (!function_exists('sso_session')) {
    
    /**
     * 使用memcache 替代 session
     *
     * @param [type] $name attach 字段值 做 session_id
     * @param string $value 内容
     * @param [type] $time
     * @return void
     * @Description
     * @example
     * @author HappyCrab
     * @since
     */
    function sso_session($name = '', $value = '', $time = 60*60*24*2) {
        global $sso_session_id;
        if(!$sso_session_id) {
            $sso_session_id = md5(time());
        }
        $is_set = CacheManager::getInstances();
        if(empty($is_set)) {
            $InstanceCache = CacheManager::getInstance('memcache',new Config([
                'host' =>'127.0.0.1',
                'port' => 11211,
            ]));
        } else {
            $InstanceCache = end($is_set);
        }

        $CachedString = $InstanceCache->getItem($sso_session_id);
        // 如果 value 为空,则删除
        if($value === '') {
            if(is_null($CachedString->get())) {
                $result = '';
            } else {
                // 返回整个session值
                $result = $CachedString->expiresAfter($time)->get();
                if(!empty($name)) {
                    // 返回指定session
                    if(isset($result[$name])) {
                        $result = $result[$name];
                    } else {
                        $result = null;
                    }

                }
            }
        } else if($value === null) {
            // 删除指定session
            $result = $CachedString->expiresAfter($time)->get();
            unset($result[$name]);
            $CachedString->set($result)->expiresAfter($time);
            $InstanceCache->save($CachedString);
            $result = $CachedString->get();
        } else {
            // 添加session
            $result = $CachedString->expiresAfter($time)->get();
            $result[$name] = $value;
            $CachedString->set($result)->expiresAfter($time);
            $InstanceCache->save($CachedString);
            $result = $CachedString->get();
        }
        return $result;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值