2010-11-29 15 views
0

私はmemcachedに失望しています。それを使って作業するのは簡単ではありません。memcacheのPHP拡張モジュール(またはmemcached)が信頼できないのはなぜですか?

例:

$memcache = new Memcache; 
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect"); 

$memcache->set('id', $array, 120); 

私は約時間前にこれを設定する - そしてそれはまだそこにあります!マニュアルでは、「現在の時刻からの秒数」をパラメータとして使用できます。だから、なぜ期限は無視されますか?

バグのもう一つのことは、値が書き込まれないことがあることです。それはすべてかなり無作為です。 http://www.php.net/manual/en/memcache.set.php#84032 私はすべての私のreplace()呼び出しでもそのフォールバックを実装しました。なぜ最初の呼び出しで動作しないのか分かりません。コンテンツに置き換えられた場合に星に含まれている場合、replace()関数を提供するのはなぜですか?

なぜこのようなソフトウェアの重要性が何であっても を信頼して、より信頼性の高い方法があるのでしょうか?

+1

どのような恐ろしいと予想される質問。あなたが使用しているメソッドの署名を読み込めなかった場合、ソフトウェアが信頼できないと仮定するだけです。 – Evert

答えて

7

構文が間違っています。 3番目のパラメータは圧縮フラグです。

次のような簡単なインターフェイスを作成します。それはあなたを助けることができる:

/* defines params */ 
define('MEMCACHED',  1); 
define('CACHE_DEFAULT_EXPIRE', 3600); 

if(MEMCACHED) if(! class_exists('memcached')) die('memcache not loaded'); 

/* Cache */ 
if(MEMCACHED) { 
    global $memcache; 
    $memcache = new Memcache(); 
    $memcache->connect('127.0.0.1', 11211); 
} 

function cacheSet($key, $var, $expire=NULL) { 
    if(!MEMCACHED) return 0; 
    global $memcache; 
    if(!$expire) $expire = CACHE_DEFAULT_EXPIRE; 
    $key = md5($key); 
    return $memcache->set($key, $var, false, $expire); 
} 

function cacheGet($key) { 
    if(!MEMCACHED) return 0; 
    global $memcache; 
    $key = md5($key); 
    return $memcache->get($key); 
} 
+0

ありがとうございます。私は正しい構文を使わなかったので予期せぬ結果を示したかもしれません。 – user478419

5

を三番目のパラメータがMemcache::setでない$がを期限切れ、$フラグです。 $はを期限切れに4分の1である:

$memcache = new Memcache; 
// add server, etc. 
$memcache->set('foo', 'bar', 0, 5); // 5 seconds expiry 
var_dump($memcache->get('foo')); // bar 
sleep(6); 
var_dump($memcache->get('foo')); // false 

使用している構文は、MemcachedクラスMemcacheではありません。

set/replaceの問題は、MemcacheまたはMemcached on PHP 5.3.3で再現できません。

また、私の意見では、PECL memcached拡張のために行く必要があります。より多くの機能を提供し、libmemcachedを直接使用するので、より効率的でなければなりません。

+0

"2番目のパラメータはおそらく3番目のパラメータを意味しますか? – Powerlord

+0

Er、そうです。それを指してくれてありがとう。 – netcoder

+0

同じ問題があって、memcacheの代わりにmemcachedを見ていました。 – weotch

関連する問題