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);
?>

原文地址:https://www.cnblogs.com/93bok/p/9679881.html

时间: 2024-11-01 10:02:21

Memcached缓存Session(不建议)的相关文章

memcached缓存session

RedHat5.9 libevent-1.4.13-stable.tar.gz memcached-1.4.20.tar.gz memcache-3.0.8.tgz 安装: tar xf libevent-2.0.21-stable.tar.gz  cd libevent-2.0.21-stable ./configure --prefix=/usr/local/libevent make && make install echo "/usr/local/libevent/lib

PHP文件缓存与memcached缓存 相比 优缺点是什么呢

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 如果不考虑其他任何问题,只比较速度的话,那肯定是mem快,但他们各有优缺点. 文件缓存优点: 1.由于现在的硬盘都非常大,所有如果是大数据的时候,放硬盘里就比较合适,比如做一个cms网站,网站里有10万篇文章,生成的文件大小总数可能就会很大. 2.数据的存放较为安全,由于是硬盘存放,所以在意外掉电的情况下,缓存文件不会丢失. 3.易于扩展,如果硬盘不够用,可以更换大硬盘或者添加硬盘,在容量上受的限制很小. 文

Memcached存Session数据、访问安全性、使用场景总结(3)

最近做了一个单点登录SSO,登陆后的凭证放到Memcached令牌放到Cookies:但是用户经常掉线,开发环境和测试却没有这个问题,最后从Memcached找到原因. Memcached概念.作用.运行原理.特性.不足简单梳理(1) Memcached下载安装.NET对Memcached进行CRUD操作(2) Memcached存Session数据.访问安全性.使用场景总结(3) 一.Session数据放入到Memcached? Memcached创建者Dormando写过两篇文章: Sess

让php或httpd服务来使用memcached存储session数据

memcached命令行 memcached语法 <command?name>?<key>?<flags>?<exptime>?<bytes>\r\n?<data?block>\r\n注:??\r\n在windows下是Enter键 <command?name>可以是set,?add,?replace set ? ? ? ? ? 表示按照相应的<key>存储该数据,??没有的时候增加,??有的时候覆盖 add

Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用

一.高可用的Session服务器场景简介 1.1 应用服务器的无状态特性 应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性. PS:提到无状态特性,不得不说下Http协议.我们常常听到说,Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息.之所以我们在使用ASP.NET WebForm开发中会感觉不到Http的无状态特

Memcached 笔记与总结(9)Memcached 与 Session

一.Memcached 存储 Session 由于 Memcached 是分布式的内存对象缓存系统,因此可以用来实现 Session 同步:把 Web 服务器中的内存组合起来,成为一个“内存池”,不管是哪个服务器产生的 Sessoin 都可以放到这个“内存池”中,其他的 Web 服务器都可以使用.使用 Memcached 来同步 Session 的优点是:不会加大数据库的负担,并且安全性比 Cookie 高,把 Session 放到内存里面,读取速度比其他处理方式要快很多. 自定义使用 Memc

Nginx + Memcached 实现Session共享的负载均衡

session共享 我们在做站点的试试,通常需要保存用户的一些基本信息,比如登录就会用到Session:当使用Nginx做负载均衡的时候,用户浏览站点的时候会被分配到不同的服务器上,此时如果登录后Session就在不同发服务器上,A记住了用户的登录状态,可是下一次用户请求被分配到B去了怎么办?不可能让用户再登陆一次.所以要实现session共享. 方法 1.ip_hash,这是Nginx的轮询方法,用户登录站点时,就会一直在这台服务器上就不存在Session的问题 优点:不需要采用任何处理: 缺

受教了,memcache比较全面点的介绍,受益匪浅,适用memcached的业务场景有哪些?memcached的cache机制是怎样的?在设计应用时,可以通过Memcached缓存那些内容?

基本问题 1.memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid -d选项是启动一个守护进程, -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, -u是运行Memcache的用户,我这里是root, -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服

实战项目memcached+tomcat+session+nginx在工作中的应用和配置

环境介绍:公司根据实际需要搭建一个购物网站,当用户购物时可以 将不同商品,放到同一个购物车中进行同时付款. 环境的搭建: 外网用户  IP地址:1.1.1.1  主机名:fanxiaohui  用户访问网站http://www.taobao.com 使用nginx实现负载均衡,由于网页是用JAVA开发的所以选用tomcat搭建网站服务,由于用户在购物时http是一个无状态的协议,不同的商品都是一个新的连接,默认不会把几个商品放到同一个购物车中,无法进行统一结账,为了能使服务器能够认识是同一个客户