Ubuntu下实现Memcache共享session

1。安装memcached,Ubuntu懒人方式当然首选 apt-get。apache php5 安装我就不多说了。
   apt-get install memcached php5-memcache
 
   安装完Memcache服务端以后,我们需要启动该服务:
   memcached -d -m 128 -p 11211 -u root

将etc/memcached.conf  中的 127.0.0.1 改成 服务器地址我这里是 192.168.1.105.可以给memcache 单建一个用户去跑服务,默认是nobody,我就不去建了。
将/etc/php5/apache2/conf.d/memcache.ini  里的 extension=memcache.so 前注释去掉。然后重启动apache2 查看 phpinfo 中的 "Registered save handlers" 会有 "files user memcache" 这3个可用。

 
2。然后修改 /etc/php5/apache2/php.ini
session.save_handler = memcache
session.save_path = “udp://192.168.0.100:11211,tcp://192.168.0.101:11211″ //多台服务器共享
使用多个 memcached server 时用逗号","隔开
也可以在 .htaccess :
php_value session.save_handler "memcache"
php_value session.save_path  "tcp://192.168.1.100:11211"
再或者在某个一个应用中:
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://192.168.1.100:11211");

我们需要在php.ini里进行简单的配置,打开/etc/php5/apache2/php.ini文件在末尾添加如下内容:

修改php.ini 中 extension_dir 的值为/usr/lib/php5/20090626+lfs/ ,重新执行 php -m 可以看到warning不存在了,同时下边也会列出 memcache 模块已经安装

3.启动memcached /etc/init.d/memcached start

4.重启apache /etc/init.d/apache2 restart

在分布式多台服务器部署apache后,将下面测试代码分别放到每台服务器中:

login.php  //登陆页面

<?php

session_start();

$_SESSION['name']='mym';
$_SESSION['pwd']='123456';
$session_id=session_id();
echo "sid:".$session_id."<br>";
echo '<br><a href="./read.php">read session</a>';

?>

read.php

<?php
session_start();

$session_id=session_id();
echo "sid:".$session_id."<br>";

echo 'sever:192.168.1.100<br>';   //在另一台服务器中将ip改为对应的192.168.1.101
echo 'name:'.$_SESSION['name']."<br>";
echo 'pwd:'.$_SESSION['pwd']."<br>";
?>

在前端服务器由ngnix反向代理访问:login.php后,再点击read.php页面,我们可以看到循环的切换后端服务器的ip,并且读出相应的session值。