java和php能共享的session(通过memcache)

用普通的memcache重写session 实际上是为了让session用json格式保存,好用java读取..

java只需要修改它的session程序,就可以做到java php session通用(相互无缝调取)了

不过要注意$id就是session_id是在php.ini中设置name 要和java统一。。否则还是没戏

 

include ‘include/_Memcache.class.php’;
/**
* 打开。。没用
* @author
* @param $save_path
* @param $session_name
* @return unknown_type
*/
function open($save_path, $session_name) {
return(true);
}
/**
* 关闭。。没用
* @author
* @return unknown_type
*/
function close() {
return(true);
}
/**
* 统一使用make key的方法获取存取主键
* @author
* @param $id
* @return unknown_type
*/
function makeKey($id) {
return “sysSession/sess_$id”;
}
/**
* 读取,直接设置了$_SESSION,不知道会有什么问题吗。。。。
* @author
* @param $id
* @return unknown_type
*/
function read($id){
$GLOBALS['sessionDataStore'] = json_decode($GLOBALS['memCache']->getValue(makeKey($id)),true);
$_SESSION= $GLOBALS['sessionDataStore'];
return $_SESSION;
}
/**
* 写入session,也是直接将$_SESSION写入memcache,并没有用系统自带的session_encode
* @author
* @param $id
* @return unknown_type
*/
function write($id, $sess_data){
//如果session从未被修改过,那么就真的不用再调用memcache进行写入了!(这里的确节省了不少~~)
if(serialize ($GLOBALS['sessionDataStore']) == serialize ($_SESSION)) {
return true; //用这种模式session的存活时间一定要长,否则就不行了。。
}
return $GLOBALS['memCache']->setValue(makeKey($id),json_encode($_SESSION),24*3600); //24个小时过期,好在memcache的空间大,存个session还是有富余的~~
}
/**
* 销毁session
* @author
* @param $id
* @return unknown_type
*/
function destroy($id){
return $GLOBALS['memCache']->delete(makeKey($id));
}
/**
* 过期 没用
* @author
* @param $maxlifetime
* @return unknown_type
*/
function gc($maxlifetime) {
return true;
}

session_set_save_handler(“open”, “close”, “read”, “write”, “destroy”, “gc”);
register_shutdown_function (‘session_write_close’); //一定要这样,否则write这个函数里面不能用类!因为session调用write函数的时候,类已经释放了。
session_start();

转自:http://hi.baidu.com/lotusxyhf/blog/category/Java


» 本文链接:https://blog.java-zone.org/archives/157.html
» 转载请注明来源:Java地带  » 《java和php能共享的session(通过memcache)》

» 本文章为Java地带整理创作,欢迎转载!转载请注明本文地址,谢谢!
» 部分内容收集整理自网络,如有侵权请联系我删除!

» 订阅本站:https://blog.java-zone.org/feed/

标签: Memcache, Session, Session共享

添加新评论