入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

session 共享的实现方式(PHP)

创建时间:2012-11-13 投稿人: 浏览次数:1357

最近正在研究负载均衡和web server的集群架构,其中有一点会涉及到web server集群中各主机的session如何共享的问题。

业界对于这个问题的解决大体会用以下三种方式:

1. 将session存入专门的一个数据库

2. 将session存入专门的一台session服务器的磁盘里

3. 将session存入专门的一台session服务器的内存里


对于这几个方案,各有优势,关键看你的系统的特性来决定选择什么方案吧。

我针对第三个方案做了一个demo,选择的是大名鼎鼎的memcache来做内存缓存session的服务器

各个web server端需要做一些配置工作,如下:

1. 打开php.ini配置文件

2. 修改这些内容

    session.save_handler = memcache                  (默认是files,改成memcache)

    session.save_path = "tcp://localhost:11211"    (memcache server的地址或者域名)

    session.cookie_domain = .test.com                   (将cookie的有效域设置成同一个域名,目的是为让各个web server对同一个客户端生成同一个SESSION ID)


暂时就是这些配置

测试一下吧:

session_start();

if (!isset($_SESSION["TEST1"])) {   

$_SESSION["TEST1"] = time();

}

$_SESSION["TEST2"] = time();

print $_SESSION["TEST1"];

print "<br><br>";

print $_SESSION["TEST2"];

print "<br><br>";

print session_id();

print "<br><br>";

$memcache = new Memcache;  

$memcache = memcache_connect("localhost", 11211);

var_dump($memcache->get(session_id()));


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。