替换PHP的原生session支持_php技巧_脚本之家

艺术文件 session落成公文:memcachedsession.php 达成原理:
1.先判别客商端有未有sessionid,
a.未有就增添二个sessionid给客户端,日常是三16人hash码,同有的时候常候开首化二个数组做session容器
b.即使顾客端有sessionid,则应用这么些sessionid去memcached里面查数据。
2.顾客在页面施行进度中得以自行改善session容器里的session值
3.页面提及底会把客户的session容器作为值,以客商的sessionid作为键,把那么些键值对封存到
memcached里面 复制代码 代码如下:
‘localhost’ , ‘port’ => 11211 State of Qatar; /* 获取一些伊始化设置值 */
$_SESSION_NAME = ini_get; //sessionid的名称 $_SESSION_TIME =
ini_get(“session.cookie_lifetime”卡塔尔国;
//sessionid那么些cookie的最大保存时间 $_SESSION_EXPIRE =
ini_get(“session.gc_maxlifetime”卡塔尔(قطر‎;
//session键值对在memcached里面包车型地铁晚点时间 $_SESSION_MEMKEY = “”;
//sessionid值 /*
自定义的_session_start()方法,替换PHP的原生session_start(卡塔尔(قطر‎方法
逻辑应该是相比较清楚的 */ function _session_start() { global
$_SESSION_NAME, $_SESSION_TIME, $_SESSION_MEMKEY; global
$_SESSION; global $_MEMCACHEAUTH, $_sessionmem; $_sessionmem =
memcache_connect($_MEMCACHEAUTH[‘host’], $_MEMCACHEAUTH[‘port’]);
if ( empty($_COOKIE[$_SESSION_NAME]) ) { $_SESSION_MEMKEY = md5;
setcookie($_SESSION_NAME, $_SESSION_MEMKEY , $_SESSION_TIME, “/”);
$_SESSION = array(); } else { $_SESSION_MEMKEY =
$_COOKIE[$_SESSION_NAME]; $_SESSION = memcache_get($_sessionmem,
$_SESSION_MEMKEY ); if ( $_SESSION === FALSE ) { $_SESSION =
array(卡塔尔国; } } //注册一个handler,那一个函数会在页面实践完的时候推行register_shutdown_function(“_session_save_handler”); } /*
页面最后实践的不二诀要,用于保存session值,以至关闭memcached连接 */
function _session_save_handler() { global $_sessionmem; global
$_SESSION, $_SESSION_NAME, $_SESSION_EXPIRE, $_SESSION_MEMKEY;
memcache_set($_sessionmem, $_SESSION_MEMKEY, $_SESSION, 0,
$_SESSION_EXPIRE); memcache_close; } ?> 测验文件: 设置session值
复制代码 代码如下: 获取session值 复制代码 代码如下:
Memcached的缓冲应用还是十分不易滴,呵呵,,, 转发:jincon’s 包 blog

发表评论

电子邮件地址不会被公开。 必填项已用*标注