web集群时利用memcache来同步session

memcache可以做分布式,如果没有这功能,他也不能用来做session同步。他可以把web服务器中的内存组合起来,成为一个”内存池”,不管是哪个服务器产生的sessoin都可以放到这个”内存池”中,其他的都可以使用。

优点:以这种方式来同步session,不会加大数据库的负担,并且安全性比用cookie大大的提高,把session放到内存里面,比从文件中读取要快很多

缺点:memcache把内存分成很多种规格的存储块,有块就有大小,这种方式也就决定了,memcache不能完全利用内存,会产生内存碎片,如果存储块不足,还会产生内存溢出


觉得用memcache来同步session是最好的,下面是我的设置过程


1、模拟web集群

我启动了二个memcached进程,分别模拟二台服务器

/usr/local/bin/memcached-d-m1024-c3000-uuenucom-p12000-P./memcached.pid

/usr/local/bin/memcached-d-m1024-c3000-uuenucom-p13000-P./mem.pid

2、修改php的配置

vi/usr/local/php/lib/php.ini

session.save_handler=“memcache”

memcache.hash_strategy=“consistent”

session.save_path=“tcp://127.0.0.1:13000?weight=10,tcp://127.0.0.1:12000″

说明:第一行,session的储存方式是memcache;第二行,memcache的hash算法是consistent;第三行,session储存的位置;

3、重启apache

查看phpinfo

session

SessionSupportenabled

Registeredsavehandlersfilesusersqlitememcache

Registeredserializerhandlersphpphp_binary

紧接着下面是

session.save_pathtcp://127.0.0.1:13000,tcp://127.0.0.1:12000

4、做个简单测试

a)准备文件session.php

PHP代码


  1. session_start(); 
  2. $_SESSION['username']=“abcabc”;echosession_id(); 
  3. ?> 

b)显示session内容文件

PHP代码


  1. $mem=newMemcache; 
  2. $mem->addServer(“127.0.0.1″,12000)ordie(“Couldnotaddserver12000″); 
  3. $mem->addServer(“127.0.0.1″,13000)ordie(“Couldnotaddserver13000″); 
  4. $val=$mem->get(‘qp0mrob2ovcqle3u4lbr4obsa5′); 
  5. //echosession_id();
  6. echo$val; 
  7. ?> 

c)结果是username|s:6:”abcabc”;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值