2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > PHP兑现多服务器session共享之memcache共享

PHP兑现多服务器session共享之memcache共享

时间:2020-12-30 21:37:35

相关推荐

PHP兑现多服务器session共享之memcache共享

后端开发|php教程

session,memcache,return,wSessId,MemacheSession

后端开发-php教程

PHP实现多服务器session共享之memcache共享

j2ee框架源码,vscode全是文本,ubuntu deepon,tomcat停止应用,sqlite的视频文件,joomla 广告插件,学web前端框架多少钱,暴虐龙vs骷髅爬虫动画,cpanel php,长治上门seo优化,绿色的动漫电影网站模板免费下载,126网页源码,个人简历下载免费网站模板下载lzw

使用基于文件的Session存取瓶颈可能都是在磁盘IO操作上,所以对付小数据量的Session没有问题,但是如果碰到大数据量的Sesstion,那么可能无法胜任,现在利用Memcache来保存Session数据,直接通过内存的方式,效率自然能够提高不少

会议通知源码,ubuntu文字界面关机,java能做爬虫嘛,如何删除php中的元素为某一值,学seo培lzw

首先打开php.ini文件,找到session的部分:(分号后面的是注释)

微信网络报名系统源码,vscode插件运行命令,ubuntu 密码忘记,主机头 tomcat,sqlite正确读音,网页设计 选项卡,jsp读取数据库图片,云服务器如何开ftp,wordpress 菜单栏插件,前端框架现在什么最火,资讯爬虫,php会员,seo优化策划,springboot 选择,正则替换img标签,小说网站 代码,网页上的鼠标,化妆品客户信息本模板,织梦后台上传专题页面,移动页面布局,java超市管理系统论文,spider程序 源码lzw

[Session]

; Handler used to store/retrieve data.

session.save_handler = files ; 这个是session的方式,默认的files就可以了,代表用文件储存,

还有两种方式,user和memcache。

user方式指的是你自己(也就是用户)定义session的句柄,用于session的存取等,这个可以把session扩展存到数据库里

memcache方式,需要你配置好memcache,还要配置session.save_path。

用memcache来作PHP 的session.save_handler

ini_set("session.save_handler", "memcache");ini_set("session.save_path", "tcp://127.0.0.1:11211,tcp://192.168.1.12:11211");

用memcached 来作PHP 的session.save_handler

ini_set("session.save_handler","memcached");ini_set("session.save_path","127.0.0.1:11211");

PHP实现多服务器session共享之memcache共享

再自定义一套session处理机制,关于session的实现方法我就不再多讲,直接贴程序了。

connect(MEMCACHE_HOST , MEMCACHE_PORT)){die(Fatal Error: Can not connect to memcache host . MEMCACHE_HOST .:. MEMCACHE_PORT);}return TRUE;}// }}}/** {{{ sessOpen($pSavePath, $name)** @param String $pSavePath* @param String $pSessName** @return Bool TRUE/FALSE*/public function sessOpen($pSavePath = \, $pSessName = \){self::$mSessSavePath = $pSavePath;self::$mSessName = $pSessName;return TRUE;}// }}}/** {{{ sessClose()** @param NULL** @return Bool TRUE/FALSE*/public function sessClose(){return TRUE;}// }}}/** {{{ sessRead($wSessId)** @param String $wSessId** @return Bool TRUE/FALSE*/public function sessRead($wSessId = \){$wData = self::$mMemcacheObj->get($wSessId);//先读数据,如果没有,就初始化一个if (!empty($wData)){return $wData;}else{//初始化一条空记录$ret = self::$mMemcacheObj->set($wSessId, \, 0, SESS_LIFTTIME);if (TRUE != $ret){die("Fatal Error: Session ID $wSessId init failed!");return FALSE;}return TRUE;}}// }}}/** {{{ sessWrite($wSessId, $wData)** @param String $wSessId* @param String $wData** @return Bool TRUE/FALSE*/public function sessWrite($wSessId = \, $wData = \){$ret = self::$mMemcacheObj->replace($wSessId, $wData, 0, SESS_LIFTTIME);if (TRUE != $ret){die("Fatal Error: SessionID $wSessId Save data failed!");return FALSE;}return TRUE;}// }}}/** {{{ sessDestroy($wSessId)** @param String $wSessId** @return Bool TRUE/FALSE*/public function sessDestroy($wSessId = \){self::sessWrite($wSessId);return FALSE;}// }}}/** {{{ sessGc()** @param NULL** @return Bool TRUE/FALSE*/public function sessGc(){//无需额外回收,memcache有自己的过期回收机制return TRUE;}// }}}/** {{{ initSess()** @param NULL** @return Bool TRUE/FALSE*/public function initSess(){//不使用 GET/POST 变量方式ini_set(session.use_trans_sid, 0);//设置垃圾回收最大生存时间ini_set(session.gc_maxlifetime, SESS_LIFTTIME);//使用 COOKIE 保存 SESSION ID 的方式ini_set(session.use_cookies,1);ini_set(session.cookie_path,/);$domain = .;//多主机共享保存 SESSION ID 的 COOKIEini_set(session.cookie_domain, $domain);//将 session.save_handler 设置为 user,而不是默认的 filessession_module_name(user);//定义 SESSION 各项操作所对应的方法名:session_set_save_handler(array(MemacheSession, sessOpen), //对应于静态方法 My_Sess::open(),下同。array(MemacheSession, sessClose),array(MemacheSession, sessRead),array(MemacheSession, sessWrite),array(MemacheSession, sessDestroy),array(MemacheSession, sessGc));session_start();return TRUE;}// }}}}//end class}//end define$memSess = new MemacheSession;$memSess->initSess();?>

?然后,在项目程序的头文件中直接包含 MemacheSession.inc.php 即可,并且以前的程序不用做任何改动。

测试 创建一个session

用 sessionid 去 memcached 里查询一下

connect("127.0.0.1", 11211);var_dump($mem->get(935216dbc0d721d629f89efb89affa6));?>

?

备注:memcache PECL 未来版本中,可以直接设置 php.ini 来这定自己的 session.save_handler,大致如下:

session.save_handler = memcachesession.save_path = "tcp://host:port?persistent=1&weight=2&timeout=2&retry_interval=15,tcp://host2:port2"

1 楼 any_luf -02-08

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。