2

PHP を使用して、次のプロセスの一部として memcached に配列を永続化しています。

  1. memcached から配列を取得する
  2. 配列の最初の項目に対して操作を実行する
  3. 操作の結果に基づいて配列を更新する
  4. memcached に配列を設定する

配列には URL が文字列として含まれています。

配列サイズが大きいと、memcached の設定操作が失敗します。ごく最近では、78175 個の URL を含む配列で失敗しました。

memcached から得られるエラーは、やや一般的なものです。

Result code: 10
Result message: SERVER ERROR

libmemcachedのドキュメントは、この特定のエラーにはほとんど役に立ちません。

私が使用しているコードは非常に簡単です。

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 の原因は何ですか?

4

2 に答える 2

4

私の場合、データが memcache オブジェクトのグローバル最大値 (1MB) を超えたためだと思います。

于 2012-05-21T00:20:21.823 に答える
-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);
于 2012-04-26T12:12:20.320 に答える