如何优先使用memcached扩展及CAS协议读取memcache配置值?

更新于
2026-09-26 06:36:11
2阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计335个文字,预计阅读时间需要2分钟。

如何优先使用memcached扩展及CAS协议读取memcache配置值?

最近在项目中,由于需要防止并发,决定使用PHP的memcached扩展。memcached扩展支持CAS协议,而memcache扩展则不支持。在安装memcached过程中,发现Windows下没有相应的扩展。为了保持代码的一致性,就写了如下代码:

如何优先使用memcached扩展及CAS协议读取memcache配置值?

最近在项目中因为要防止并发,需要使用php的memcached扩展,memcached扩展支持cas协议,而memcache扩展却不支持。安装memcached过程中发现windows下并没有该扩展,为了保持代码的一致,就写了一个既支持memcached又支持memcache的类,这样就不用担心生产和本地开发代码的不一致。(注:笔者平常工作在windows下开发,生产环境是Linux。如果你平常开发和生产环境都是linux或mac的话就不会有这个问题)

<?php //访问博客了解更多 back.zhizhi123.com/?p=143 class ZMemcached { static private $mem; //简单的单例模式,减少资源消耗 static public function getinstance() { if(self::$mem==null) { //判断php是否安装了memcached扩展 if(class_exists('Memcached')) { self::$mem = new Memcached(); } else { self::$mem = new Memcache(); } } return self::$mem; } static public function get($key) { global $INI; if(class_exists('Memcached')) { $m1 = self::getinstance(); //这里可以添加多个memecache server $m1->addServer($INI['memcachehost'], $INI['memcacheport']); $res['value'] = $m1->get($key, null, $cas); $res['cas'] = $cas; } else { $m1 = self::getinstance(); $m1->addServer($INI['memcachehost'], $INI['memcacheport']); $res['value'] = $m1->get($key); } return $res; } static public function set($key,$value,$cas) { $value = (string)$value; global $INI; if(class_exists('Memcached')) { $m1 = self::getinstance(); $m1->addServer($INI['memcachehost'], $INI['memcacheport']); $res = $m1->cas($cas,$key,$value); } else { $m1 = self::getinstance(); $m1->addServer($INI['memcachehost'], $INI['memcacheport']); $res = $m1->set($key,$value); } return $res; } }

本文共计335个文字,预计阅读时间需要2分钟。

如何优先使用memcached扩展及CAS协议读取memcache配置值?

最近在项目中,由于需要防止并发,决定使用PHP的memcached扩展。memcached扩展支持CAS协议,而memcache扩展则不支持。在安装memcached过程中,发现Windows下没有相应的扩展。为了保持代码的一致性,就写了如下代码:

如何优先使用memcached扩展及CAS协议读取memcache配置值?

最近在项目中因为要防止并发,需要使用php的memcached扩展,memcached扩展支持cas协议,而memcache扩展却不支持。安装memcached过程中发现windows下并没有该扩展,为了保持代码的一致,就写了一个既支持memcached又支持memcache的类,这样就不用担心生产和本地开发代码的不一致。(注:笔者平常工作在windows下开发,生产环境是Linux。如果你平常开发和生产环境都是linux或mac的话就不会有这个问题)

<?php //访问博客了解更多 back.zhizhi123.com/?p=143 class ZMemcached { static private $mem; //简单的单例模式,减少资源消耗 static public function getinstance() { if(self::$mem==null) { //判断php是否安装了memcached扩展 if(class_exists('Memcached')) { self::$mem = new Memcached(); } else { self::$mem = new Memcache(); } } return self::$mem; } static public function get($key) { global $INI; if(class_exists('Memcached')) { $m1 = self::getinstance(); //这里可以添加多个memecache server $m1->addServer($INI['memcachehost'], $INI['memcacheport']); $res['value'] = $m1->get($key, null, $cas); $res['cas'] = $cas; } else { $m1 = self::getinstance(); $m1->addServer($INI['memcachehost'], $INI['memcacheport']); $res['value'] = $m1->get($key); } return $res; } static public function set($key,$value,$cas) { $value = (string)$value; global $INI; if(class_exists('Memcached')) { $m1 = self::getinstance(); $m1->addServer($INI['memcachehost'], $INI['memcacheport']); $res = $m1->cas($cas,$key,$value); } else { $m1 = self::getinstance(); $m1->addServer($INI['memcachehost'], $INI['memcacheport']); $res = $m1->set($key,$value); } return $res; } }