Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49061
  • 博文数量: 13
  • 博客积分: 555
  • 博客等级: 中士
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-20 14:56
文章分类

全部博文(13)

文章存档

2011年(13)

我的朋友

分类: BSD

2011-01-24 01:08:40

应用 memchche代替 php默认的file来存储session,可以或许实现更快的速率,并且很轻易实现多主机共享session的需求。本文扼要 先容一下安装设置的办法

体系 环境 :FreeBSD7.0 , php5.2.0

1.起首安装memcache,由于是在FreeBSD环境 下,以是我们采用 最大略 的ports行动来安装memcache

cd /usr/ports/databases/memcached/
make install clean

ports会主动 探求源举办下载,然后编译安装
安装好memcache以后,编辑 /etc/rc.conf文件,在末了一行加一句 memcached_enable="YES"
然后生涯退出。memcache会随着开机主动 启动,手动启动的下令是:
/usr/local/etc/rc.d/memcached start
好了,如今 memcache已经安装并启动完毕了。

2.安装pecl::memcache扩张,这是php的扩张,安装以后可以应用 Memcache函数库,php手册上有具体的应用法阐发 。

cd /usr/ports/databases/pecl-memcache/
make install clean

安装好以后,会主动 在/usr/local/etc/php/extension.ini 加上一行 extension=memcache.so
用下令查察 一下:
cat /usr/local/etc/php/extensions.ini
假如望见 末了一行有 extension=memcache.so
阐发 已经安装好了,这个时间重新启动一下apache server即可,phpinfo()可以看到memcache扩张的信息。

3.设置session用memcache来存储

编辑 php.ini文件,做如下批改
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
固然 ,也可以在httpd.conf文件中加上,条件是php以模块行动载入,假如是cgi行动无效
php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"

3. 批改设置文件,在 php.ini 中全局设置:

session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"可能某个目次下的 .htaccess : php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"再可能在某个一个操纵中: ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211");

应用多个 memcached server 时用逗号","离隔,并且 和 文档中阐发 的一样,可以带稀奇 的参数"persistent"、"weight"、"timeout"、"retry_interval" 等等,类似如许的:"tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2" 。

4. 启动 memcached:

memcached -d -l 127.0.0.1 -p 11212 -m 128

启动Memcache的做事器端:

memcached -d -m 100 -u root -l 192.168.36.200 -p 11211 -c 256 -P /tmp/memcached.pid  

# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid


    -d
选项是启动一个守卫进程,
    -m
是分派给Memcache应用的内存数量 ,单位 是MB,我这里是100MB

    -u
是运行Memcache的用户,我这里是root

    -l
是监听的做事器IP所在,假如有多个所在的话,我这里指定了做事器的IP所在192.168.36.200

    -p
是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,我们这里同一应用
11211
    -c
选项是最大运行的并发毗连 数,默认是1024,我这里设置了256,服从你做事器的负载量来设定。

    -P
是设置生涯 Memcachepid文件,我这里是生涯在/tmp/memcached.pid

5. 在措施中应用 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();
?>

6. 用 sessionid 去 memcached 里查询一下:

$memcache = memcache_connect('localhost', 11211);
var_dump($memcache->get('19216821213c65cedec65b0883238c278eeb573e077'));
$memcache->set('aaaa', 'hello everyone');
var_dump($memcache->get('aaaa'));
?>会有看到 string(37) "TEST|i:1177556731;TEST3|i:1177556881;"

如许的输出,证明 session 正常事变 。

用 memcache 来存储 session 在读写速率上会比 files 时快很多 ,并且在多个做事器必要 共用 session 时会比拟 利便,将这些做事器都设置成应用同一组 memcached 做事器就可以,镌汰 了稀奇 的事变 量。错误是 session 数据都生涯在 memory 中,恒久化方面有所短缺,但对 session 数据来说也不是很大的题目。

阅读(1082) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~