本文实例讲述了thinkPHP实现MemCache分布式缓存功能。分享给大家供大家参考,具体如下:

两天在研究MemCache分布式缓存的问题时,发现ThinkPHP其实并不支持分布式缓存功能,这可以从官方提供的CacheMemcache.class.php文件中看到:

if(empty($options)) {

$options = array

(

'host' => '127.0.0.1',

'port' => 11211,

'timeout' => false,

'persistent' => false

);

}

$func = $options['persistent'] ? 'pconnect' : 'connect';

$this->expire = isset($options['expire'])?$options['expire']:C('DATA_CACHE_TIME');

$this->handler = new Memcache;

$this->connected = $options['timeout'] === false ?

$this->handler->$func($options['host'], $options['port']) :

$this->handler->$func($options['host'], $options['port'], $options['timeout']);

不过不要紧,稍微修改下就行了,即

if(empty($options)) {

$options = array

(

'timeout' => false,

'persistent' => false,

'servers'=>array(

array('ip'=>'127.0.0.1','port'=>11211),

array('ip'=>'127.0.0.1','port'=>11212),

array('ip'=>'202.116.32.4','port'=>11211),

),

);

}

//分布式处理函数

$func="addServer";

$this->expire = isset($options['expire'])?$options['expire']:C('DATA_CACHE_TIME');

$this->handler = new Memcache;

if($options['timeout']===false)

{

foreach($options['servers'] as $server)

{

$this->handler->$func($server['ip'],$server['port']);

}

}

闲来无事,于是就在本机上启动了两个MemCache服务器,顺手编写了一段简单的监控代码(隔一段时间自动刷新一次),进行测试。如果发现服务器运行不正常,则使用PhpMailer自动发送一封Email到管理员邮箱。测试结果表明,两台Memcache服务器均工作正常,而另外一台虚假的服务器当然是无法连接到的。哈哈,够简单的吧

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

php分布式cache,thinkPHP实现MemCache分布式缓存功能相关推荐

  1. 分布式存储系统中的数据高效缓存方法

    点击上方蓝字关注我们 分布式存储系统中的数据高效缓存方法 杨青霖, 吴桂勇, 张广艳 清华大学计算机科学与技术系,北京 100084 摘要:针对典型分布式存储系统存在的写放大.I/O路径过长.响应时延 ...

  2. 记录memcache分布式策略及算法

    摘要  http://wenku.baidu.com/link?url=eUmpWDGFiFguyQLxwmXwRYmbnW7Wm1Bo79dGoomSnmOPWDIA5-FFSTNRI7MBQq8Q ...

  3. memcache分布式 [一致性hash算法] 的php实现

    以前一般用的是最原始的hash取模做分布式,当生产过程中添加或删除一台memcache都会造成数据的全部失效,一致性hash就是为了解决这个问题,把失效数据降到最低,相关资料可以google一下! p ...

  4. php 一致性hash,【转载】memcache分布式 [一致性hash算法] 的php实现

    最近在看一些分布式方面的文章,所以就用php实现一致性hash来练练手,以前一般用的是最原始的hash取模做分布式,当生产过程中添加或删除一台memcache都会造成数据的全部失效,一致性hash就是 ...

  5. 16-1 Redis分布式缓存引入与保存缓存功能实现

    16-1 Redis分布式缓存引入与保存缓存功能实现 现在功能已经完成了,但是我们还是要考虑一下性能问题,现在任何请求都是要到数据库中查询很多的数据,才能知道当前的用户是否有权限可以访问当前的url, ...

  6. Memcache分布式部署方案

    前言 应该是很久之前,我开始研究Memcache,写了一系列的学习心得,比如<Discuz!的Memcache缓存实现>等.后面的好几十条回复也让这篇文章成为了此博客中颇受关注的一员. 同 ...

  7. memcache分布式实现、memcache分布式的数据同步、memcache保存session数据的实现

    Memcache的分布式介绍 memcached虽然称为"分布式"缓存服务器,但服务器端并没有"分布式"功能.服务器端仅包括内存存储功能,其实现非常简单.至于m ...

  8. 分布式面试全家桶:分布式事务+分布式锁+分布式缓存+分布式面试题+分布式项目

    一.分布式事务 1.分布式事务简介 2.Seata简介 3.Seata-Server安装 4.Seata配置Nacos注册中心和配置中心 5.Seata-AT模式   6.XA协议 7.Seata整体 ...

  9. 分布式mysql一致性问题_分布式缓存数据库一致性问题

    缓存和数据库一致性问题,有很多解决方案,没有最完美的方案,只有适合自身业务的尽可能完美的方案. 缓存由于其高并发和高性能的特征,已经在项目中被广泛应用. 查询时一般先查询缓存,如果缓存命中的话,那么直 ...

最新文章

  1. ecshop后台实现用ajax动态修改/更新用户评论的时间
  2. Ajax进度条动画制作网址
  3. xp系统如何开启索引服务器,Windows XP系统关闭磁盘索引的两个方法图文教程
  4. dz论坛ucenter打不开mysql_Discuz论坛搬家 ucenter info:can not connect to MySQL server解决办法...
  5. 课时36:类与对象:给大家介绍对象
  6. mysql更新数据索引慢_mysql添加索引,查询反而变慢
  7. C#下的两种加密方式MD5和DEC
  8. drools简单应用
  9. SpringCloud Config 分布式配置
  10. C# web项目中sql数据库转sqlite数据库
  11. python的使用说明_Python教程:Python中__init__.py的使用用法说明
  12. C2597 LNK2001 C++静态成员函数、变量理解
  13. Linux 增加交换分区
  14. 记Dorado7学习(4)
  15. euht网络登录_基于EUHT技术的城轨高速线路车地无线网络解决方案
  16. Java学习里程-----Java基础_26 BigDecimal类
  17. Unity3d的一些简单坑
  18. 与病毒名称相似,“捏脸”游戏 ZEPETO 涉嫌窃听?
  19. win10 minikube镜像位置_绝地求生pubg更新后出现win10下蓝屏
  20. 淘宝直通车选词怎么做?大神导航,一个神奇的网站,从此开启大神之路!

热门文章

  1. C++11 运行时变量类型判断
  2. 160个Crackme020之无OD爆破
  3. 1.11 实例:字符串替换
  4. docker之网络访问
  5. Python之collections容器数据类型
  6. python tab符号_Python3 expandtabs()方法
  7. unity能连jsp吗_Unity3D与JSP TomCat服务器传递数据和文件( 一 ) 建立Java服务器
  8. Java面试2018常考题目汇总
  9. “面试不败计划”:多线程
  10. java并发编程基础系列(五): 创建线程的四种方式