Memcached缓存Session(不建议)

Posted 93bok

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Memcached缓存Session(不建议)相关的知识,希望对你有一定的参考价值。

本文源链接地址:https:www.93bok.com

实验环境: Centos6.5minimal 64位系统
服务器IP:192.168.10.22
说明:
1.  LNMP+Memcached环境搭建不再演示,可参考之前文章
2.  相信大家也看到了,文章的后边加了(不建议)的后缀,说说原因吧:

A、如果用memcached存储Session,那么当memcached集群发生故障(比如内存溢出)或者维护(比如升级、增加或减少服务器)时,用户会无法登录,或者被踢掉线
B、memcached 的回收机制可能会导致用户无缘无故地掉线

方法一:通过php配置文件使用memcached缓存session

1、配置PHP

Session的数据默认情况下,保存在file文件中,我们可以通过修改php的配置,让其保存在其它地方:

vim /etc/php/php.ini

session.save_handler = memcached
session.save_path = "192.168.10.22:11211"
2、重启php-fpm
service php-fpm restart
3、测试一下
vim /a01/apps/nginx/html/session.php

<?php
//set_session
session_start();
$_SESSION[‘name‘]=‘nongkaige‘;
?>
<?php
//get_session
session_start();
$name=$_SESSION[‘name‘];
echo $name;
?>
http://192.168.10.22/session.php

技术分享图片

输出nongkaige正确

但是如果获取session变量的时候,不再是name属性,而是通过session_id来保存的:

vim /a01/apps/nginx/html/session_id.php

<?php
session_start();
$_SESSION[‘age‘]=‘huanglihua‘;
$sess_id=session_id();
var_dump($sess_id);
?>
http://192.168.10.22/session_id.php

技术分享图片

方法二:通过ini_set() 使用memcached缓存session

上一种方法是修改的PHP配置文件,那如果我不是管理员,没有权限修改PHP配置文件呢,这时候ini_set()可以在php网站中,设置memcached缓存session

vim /a01/apps/nginx/html/ceshiye.php

<?php
ini_set(‘session.save_handler‘,‘memcached‘);
ini_set(‘session.save_path‘,‘192.168.10.22:11211‘);
session_start();
$_SESSION[‘age‘]=‘huanglihua‘;
$sess_id=session_id();
var_dump($sess_id);
?>

技术分享图片

以上是关于Memcached缓存Session(不建议)的主要内容,如果未能解决你的问题,请参考以下文章

Memcached做Tomcat的session共享

关于 tomcat 集群中 session 共享的三种方法

Memcached的安装配置及将PHP的session保存在Memcached中

Memcached的安装配置及将PHP的session保存在Memcached中

关于 tomcat 集群中 session 共享的三种方法

关于 tomcat 集群中 session 共享的三种方法