Memcached缓存Session(不建议)

1
2
3
4
5
6
7
8
实验环境: 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的配置,让其保存在其它地方:

1
2
3
4
vim /etc/php/php.ini

session.save_handler = memcached
session.save_path = "192.168.10.22:11211"
2、重启php-fpm
1
service php-fpm restart
3、测试一下
1
2
3
4
5
6
7
8
9
10
11
12
13
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;
?>
1
http://192.168.10.22/session.php

PXTFoQ.png

输出nongkaige正确

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

1
2
3
4
5
6
7
8
vim /a01/apps/nginx/html/session_id.php

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

PXTEJs.png

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

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

1
2
3
4
5
6
7
8
9
10
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);
?>

PXTZzq.png

博主QQ:1012405802
技术交流QQ群:830339411
版权声明:网站内容有原创和转载,如有侵权,请联系删除,谢谢!!
感谢打赏,93bok因你们而精彩!!(支付宝支持花呗)
0%