memcache实现session共享

session的本质:

http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你。

因此,在某些为了让服务器记住或者认识你的情况下,该怎么办呢?为了解决这个问题,session就诞生了。

session共享:

为什么要session共享呢?如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,用户每次请求的都是这台机器,但是,当需要使用负载均衡把请求分发到不同的服务器时,这个时候会话ID在客户端是没有问题的,但是如果用户的两次请求分别到了不同的两台服务器,而session只存在在一台服务器上,这个时候,可能会出现抓取不到session数据的情况,因此,就需要进行session的共享,用不同的服务器抓取到相同的session数据。

session共享的方式:

session默认是以文件形式存储的,在php的配置文件中的session.save_handler(默认存储方式,默认为files)和session.save_path(默认存储路径)进行配置。

session共享图示:

session共享有很多方式,session入库就是其中一种,session入库一般可以入mysql数据库,缓存数据库memcache、redis。这里用memcache实现session共享。

memcache实现session共享:

<?php
//设置session存储的方式
ini_set('session.save_handler','memcache');
//设置session存储的位置
ini_set('session.save_path','tcp://127.0.0.1:11211');
//开启session
session_start();
//写入session值
$_SESSION['name']='test';
//输出sessionid
echo session_id();

此时,要获取session值就可以根据sessionid从memcache获取

<?php
//根据sessionid获取session
$mem=new Memcache();
$mem->connect('127.0.0.1',11211);
$data=$mem->get($sessionid);

注意:

需要先设置好session的存储方式和存储位置,再开启session进行写入session。

一个memcache的并发性能也是有限的,如果需要更好的性能,可以采用多个memcache使用分布式memcache。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值