手机
当前位置:查字典教程网 >编程开发 >php教程 >利用Memcached在php下实现session机制 替换PHP的原生session支持
利用Memcached在php下实现session机制 替换PHP的原生session支持
摘要:方法文件session实现文件:memcachedsession.php实现原理(也是PHP内部session的实现原理):1.先判断客户端...

方法文件

session实现文件:memcachedsession.php

实现原理(也是PHP内部session的实现原理):

1.先判断客户端有没有sessionid,

a.没有就添加一个sessionid给客户端,通常是32位hash码,同时初始化一个数组做session容器

b.如果客户端有sessionid,则利用这个sessionid去memcached里面查数据。

2.用户在页面执行过程中可以自行修改session容器里的session值

3.页面最后会把用户的session容器作为值,以用户的sessionid作为键,把这个键值对保存到

memcached里面

复制代码 代码如下:

<?php

//memcached服务器连接地址

$_MEMCACHEAUTH = array(

'host' => 'localhost'

, 'port' => 11211

);

/*

获取一些初始化设置值

*/

$_SESSION_NAME = ini_get("session.name"); //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( uniqid() );

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($_sessionmem);

}

?>

测试文件:

设置session值

复制代码 代码如下:

<?php

/*

设置session值文件:session_set.php

*/

include_once "memcachedsession.php";

_session_start();

$_SESSION['a'] = time();

?>

获取session值

复制代码 代码如下:

<?php

/*

获取session值文件:session_get.php

*/

include_once "memcachedsession.php";

_session_start();

function getsession()

{

echo $_SESSION['a'];

}

getsession();

?>

Memcached的缓冲应用还是非常不错滴,呵呵,,,

转载:jincon's 包 blog http://www.yi1.com.cn

【利用Memcached在php下实现session机制 替换PHP的原生session支持】相关文章:

通过ICQ网关发送手机短信的PHP源程序

php中smarty实现多模版网站的方法

PHP调用三种数据库的方法(2)

BBS(php & mysql)完整版(七)

利用php和js实现页面数据刷新

用文本文件制作留言板提示(下)

PHP SPL标准库之接口(Interface)详解

利用js调用后台php进行数据处理原码

微信支付获取 prepay id 出现失败问题

php 类自动载入的方法

精品推荐
分类导航