传统session的数据是在硬盘的文件存储的
该session很大情况用于存储用户相关信息。用于判断一个用户是否登录系统
两个服务器的session是文件形成存储的,则他们的session相互可以通信的
用户访问搜狐视频,是与多个服务器访问的。Memcache(session)给多个服务器提供session
一个网站是有多个服务器支撑的,用户在服务器1里边登录系统,其session持久化的信息
具体案例
第一步 关于在php.ini中session的设置
第2步 创建文件
//实现session在memcache中实现
ini_set("session.save_handler","memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211");
//正常的session操作
session_start();
$_SESSION['username']='周行知';
?>
获取session
//实现session在memcache中实现
ini_set("session.save_handler","memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211");
//正常的session操作
session_start();
var_dump($_SESSION['username']);
?>
输出结果:
第三代码
//实现session在memcache中实现
ini_set("session.save_handler","memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211");
//正常的session操作
session_start();
echo session_id();
//var_dump($_SESSION['username']);
//get 25kbkstfc3ioh4sg5fo4vbl0b5
//创建一个memcache对象
///$memcache = new Memcache;
//连接Memcached服务器
//$memcache->addServer('127.0.0.1', 11211);
//$memcache->addServer('127.0.0.1', 11212);
//$memcache->addServer('127.0.0.1', 11213);
//设置key
////$memcache->set('city','beijing',0);
//$memcache->set('city1','hunan',0);
//$memcache->set('city2','chongqing',0);
//echo $memcache->get('city');
?>
获取结果:
25kbkstfc3ioh4sg5fo4vbl0b5
问题:session去哪儿呢?
答案:memcache
get 25kbkstfc3ioh4sg5fo4vbl0b5
怎么分布式操作?
//实现session在memcache中实现
ini_set("session.save_handler","memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211;tcp://127.0.0.1:11212;tcp://127.0.0.1:11213;");
//正常的session操作
session_start();
echo session_id();
//var_dump($_SESSION['username']);
//get 25kbkstfc3ioh4sg5fo4vbl0b5
//创建一个memcache对象
///$memcache = new Memcache;a
//连接Memcached服务器
//$memcache->addServer('127.0.0.1', 11211);
//$memcache->addServer('127.0.0.1', 11212);
//$memcache->addServer('127.0.0.1', 11213);
//设置key
////$memcache->set('city','beijing',0);
//$memcache->set('city1','hunan',0);
//$memcache->set('city2','chongqing',0);
//echo $memcache->get('city');
?>