2016-08-16 60 views
2

我是一個Memcached新手,我試圖使用此功能在我的應用程序中有一個可編輯的配置。Memcached返回不存儲

所以我需要存儲一些數據,這樣做我所做的:

class Settings 
{ 
    private $_config = array(); 
    private static $_memcached = null; 

    function __construct() 
    { 
     self::$_memcached = new Memcached(); 
     self::$_memcached->addServer('127.0.0.1', 11211); 

     $file = 'config.php'; //return $config content 
     require_once $file; 

     $this->_config = $config; 

     foreach($config as $item => $value) 
     { 
      self::$_memcached->add($item, $value); 
      echo self::$_memcached->getResultMessage(); 
     } 
    } 
} 

我跟着可用here文件的指令。 不幸我得到這個錯誤:

NOT STORED

我在做什麼錯了?

+0

成功時返回TRUE或失敗時返回FALSE。如果密鑰已經存在,Memcached :: getResultCode()將返回Memcached :: RES_NOTSTORED。 –

+0

@DanilaGanchar問題在於密鑰不存在。所以應該添加。 – user3287550

+0

您使用'foreach'。檢查數組中的所有項目在memcached中不存在。 –

回答

1

正如我在評論中寫的。 memcached中存在一些密鑰。並且您嘗試再次添加密鑰。這是原因。嘗試添加前添加檢查。它應該是這樣的:

foreach ($config as $item => $value) { 
    if (!(bool)self::$_memcached->get($item)) { 
     self::$_memcached->add($item, $value); 
     echo self::$_memcached->getResultMessage(); 
    } 
}