是什么导致memcached错误10('服务器错误')?

时间:2012-04-26 11:03:47

标签: php memcached libmemcached

使用PHP,我在memcached中持久化一个数组,作为以下过程的一部分:

  1. 从memcached获取数组
  2. 对数组中的第一项执行操作
  3. 根据操作结果更新阵列
  4. 在memcached中设置数组
  5. 数组包含URL作为字符串。

    对于大型数组,memcached set操作失败。最近,对于包含78175个URL的数组,它失败了。

    我从memcached获得的错误有些泛泛:

    Result code: 10
    Result message: SERVER ERROR
    

    libmemcached documentation对于此特定错误几乎没用。

    我使用的代码非常简单:

    public function save() {
        $this->memcached->set($this->key, $this->items);       
    }    
    
    protected function load() {
        $this->items = $this->memcached->get($this->key);        
        if (!$this->items) {
            $this->items = array();
        }
    }
    


    libmemcached文档对此错误几乎没有立即帮助,错误本身可以理解为模糊。

    memcached错误10的原因是什么?

2 个答案:

答案 0 :(得分:4)

就我而言,我认为这是因为数据超过了memcache对象的全局最大值(1MB)。

答案 1 :(得分:-2)

Error is Memcached::OPT_BUFFER_WRITES - 10

$this->_Memcache =& new Memcached();
$this->_Memcache->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_PHP);
$this->_Memcache->setOption(Memcached::OPT_NO_BLOCK, true);
$this->_Memcache->setOption(Memcached::OPT_TCP_NODELAY, true);
$this->_Memcache->setOption(Memcached::OPT_BUFFER_WRITES, true);
$this->_Memcache->setOption(Memcached::OPT_SERVER_FAILURE_LIMIT,3);
$this->_Memcache->setOption(Memcached::OPT_HASH,Memcached::HASH_CRC);