Chinaunix首页 | 论坛 | 博客
  • 博客访问: 295467
  • 博文数量: 153
  • 博客积分: 3347
  • 博客等级: 中校
  • 技术积分: 1556
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-30 17:50
文章分类

全部博文(153)

文章存档

2013年(7)

2012年(21)

2011年(46)

2010年(16)

2009年(63)

我的朋友

分类:

2009-12-30 18:35:42

操作系统:ubuntu 7.10

web1 : apache2.24  IP:192.168.1.105
web2: apache2.24 IP:192.168.1.106
php : PHP 5.2.3

软件 php5-memcache memcache
web1 安装
      今天想到以前用 nfs 挂载磁盘的笨办法来解决 php session问题,效果是可以但是严重的影响了访问平台速度,今天看php官方网站无意中发现memcache,大侠不要笑我,因为,以前也没太注意此问题,好了下面开始操作。
1。安装memcached,ubuntu懒人方式当然首选 apt-get。apache php5 安装我就不多说了。
apt-get install memcached php5-memcache
将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" 会有 "filesuser memcache" 这3个可用。
2。然后修改 /etc/php5/apache2/php.ini
session.save_handler = memcache
session.save_path = "tcp://192.168.1.105:11211"
使用多个 memcached server 时用逗号","隔开
也可以在 .htaccess :
php_value session.save_handler "memcache"
php_value session.save_path  "tcp://192.168.1.105:11211"
再或者在某个一个应用中:
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://192.168.1.105:11211");
3.启动memcached
/etc/init.d/memcached start
4. 在程序中使用 memcache 来作 session 存储,用例子测试一下:
session_start();
if (!isset($_SESSION['TEST'])) {
    $_SESSION['TEST'] = time();
}

$_SESSION['TEST3'] = time();

print $_SESSION['TEST'];
print "

";
print $_SESSION['TEST3'];
print "

";
print session_id();
?>

用 sessionid 去 memcached 里查询一下:$memcache = memcache_connect('192.168.1.105', 11211);
var_dump($memcache->get('27f535433865c7e250d2d1062322edfd'));
?>
会有看到 string(37) "TEST|i:1219222593;TEST3|i:1219222611;"
这样的输出,证明session正常工作了。

web2 安装
apt-get install php5-memcache
然后修改/etc/php5/apache2/conf.d/memcache.ini
将extension=memcache.so 前注释去掉。
然后修改/etc/php5/apache2/php.inisession.save_handler = memcache
session.save_path = "tcp://192.168.1.105:11211"
同样可以用上面的例子做测试.

总结
用 memcache 来存储 session 在读写速度上会比 files 时快很多,
而且在多个服务器需要共用 session 时会比较方便,将这些服务器都配置
成使用同一组 memcached 服务器就可以,减少了额外的工作量。
缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,
但对 session 数据来说也不是很大的问题.
阅读(571) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~