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;
}
}