如何优先使用memcached扩展及CAS协议读取memcache配置值?
- 内容介绍
- 文章标签
- 相关推荐
本文共计335个文字,预计阅读时间需要2分钟。
最近在项目中,由于需要防止并发,决定使用PHP的memcached扩展。memcached扩展支持CAS协议,而memcache扩展则不支持。在安装memcached过程中,发现Windows下没有相应的扩展。为了保持代码的一致性,就写了如下代码:
<?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分钟。
最近在项目中,由于需要防止并发,决定使用PHP的memcached扩展。memcached扩展支持CAS协议,而memcache扩展则不支持。在安装memcached过程中,发现Windows下没有相应的扩展。为了保持代码的一致性,就写了如下代码:
<?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; } }

