0

大家好,这是我当前设置 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   }

第一个回显的输出是 7,第二个回显是 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;
  }
4

2 回答 2

0

Arg,debian 最新的 [secure] memcached 版本还没有这个特性。通过安装 memcached 服务器的源升级到最新版本,一切都很好。

于 2010-08-16T17:58:00.657 回答
-1

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

于 2015-12-23T14:05:52.327 回答