首页 > 代码库 > PHP + Memcache 实现Session共享

PHP + Memcache 实现Session共享

一.安装Memcache和PHP扩展

Windows下的Memcache安装
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install‘ 安装
3. 再输入: ‘c:\memcached\memcached.exe -d start‘ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
4.下载php_memcache.dll,请自己查找对应的php版本的文件
5. 在C:\winnt\php.ini 加入一行 ‘extension=php_memcache.dll‘
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!

二.连接Memchache

1. 终端:telnet 127.0.0.1 11211

2. PHP:

; session.save_handler=files
session.save_handler=memcache

; session.save_path="E:\xampp\tmp"
session.save_path="tcp://127.0.0.1:11211"

相关的连接:

http://php.net/manual/zh/book.memcached.php

http://www.jb51.net/article/22065.htm

三.测试代码

<?php
session_start();
if (!isset($_SESSION[‘session_time‘])) {  
 $_SESSION[‘session_time‘] = time();
}
echo "session_time:".$_SESSION[‘session_time‘]."<br />";
echo "now_time:".time()."<br />";
echo "session_id:".session_id()."<br />";
?>

保存上面代码(注意替换域名和IP),分别放在两台服务器的web目录下,打开两个浏览器标签,先后访问两个地址,如果两个页面输出的session_time后的时间戳和session_id是一样的话就说明已经OK了。

需要注意的是,需要cookie保存session_id,有两种方法:

1.利用COOKIE存放session_id();

域名一文件php代码:
<?phpsession_start();setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".session.com"); $_SESSION[‘user_name‘] = ‘梁山良民‘;echo $_SESSION[‘user_name‘];?>
域名二文件php代码:
<?phpsession_destroy(); session_id($_COOKIE[‘session_id‘]);session_start();echo $_SESSION[‘user_name‘];?>
2.利用php.ini 的session.cookie_domain
备注:这里是用php代码实现不需要修改php.ini的配置文件;如果有需要你可以在php.ini里面修改配置文件(该情况下就不需要改段代码:ini_set("session.cookie_domain",‘session.com‘);)
域名一文件php代码:
<?phpini_set("session.cookie_domain",‘session.com‘);//注:该参数必须在sesson_start()之上,否则将不会生效session_start();$_SESSION[‘user_name‘] = ‘梁山良民‘;echo $_SESSION[‘user_name‘];?>
域名二文件php代码:
<?phpini_set("session.cookie_domain",‘session.com‘);session_start();echo $_SESSION[‘user_name‘];?>

 

PHP + Memcache 实现Session共享