PHP Memcached CAS(检查和设置)问题

时间:2010-08-16 06:04:03

标签: php memcached cas libmemcache

嘿所有,这是我当前设置的版本 Memcached(1.2.2) Pecl Memcached Client 1.0.2(使用libmemcached 0.43)

问题:在获取请求期间我无法获得一个cas令牌

以下是有问题的代码!

 27   public function action_test() {
 28     //phpinfo();
 29     $m = Model_Mem::getSingleton();
 30     $found = $m->get('navigation');
 31     echo (int)count($found).'<br />'; // Returns an array of navigation objects
 32
 33     $cas = 0;
 34     $found = $m->get('navigation', null, &$cas);
 35     echo (int)count($found); // Returns nothing!
 36
 37     exit;
 38   }

第一个echo的输出为7,第二个echo为1.此外,$ cas变量以及第二组代码中的$ found变量都是空的。我不是100%确定我是否正确这样做但是cas令牌似乎根本不适合我。我已经通过php Memcached文档,没有提及我可以轻易发现的任何CAS启用标志。我也试着看一下memcached.org网站上的一些信息,但我输了!

我从来没有遇到任何问题,它只是每当我尝试在获取请求上使用cas功能时我做错了。谢谢有人帮助我!

*编辑 这是Model_Mem :: getSingleton()函数返回的内容

  static function getSingleton() {
    if (self::$m) 
      return self::$m;

    self::$m = new Memcached();

    $servers = array(
      array('127.0.0.1', 11211, 25),
      array('127.0.0.1', 11212, 25),
      array('127.0.0.1', 11213, 25),
      array('127.0.0.1', 11214, 25)
    );

    // Sets up some options for the memcache server
    self::$m->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
    self::$m->setOption(Memcached::OPT_PREFIX_KEY, Kohana::config('globals.prefix'));
    self::$m->addServers($servers);

    return self::$m;
  }

2 个答案:

答案 0 :(得分:0)

Arg,debian的最新[安全] memcached版本还没有这个功能。通过安装memcached服务器的源代码升级到最新版本,一切都很顺利。

答案 1 :(得分:-1)

仅供参考,CAS表示“比较和交换”:https://en.wikipedia.org/wiki/Compare-and-swap