2010-11-19 3 views
0

J'utilise Memcached avec PHP, le code est comme ceci:problème bizarre Memcached

$m = new Memcache; 
$m->connect('myserver', 11213); 

$key = ... // calculate key  

$value = $m->get($key); 
if($value) return $value 

// calculate $value 
$m->set($key, $value, 3600); 
#var_dump($m->get($key); 

Maintenant chose étrange est comme ceci:

si je Décommentez la ligne var_dump, je peux voir les données récupéré et largué. C'est juste après qu'il est poussé dans Memcached. Cependant, cette ligne

$value = $m->get($key); 

retourne toujours false.

Je suis sûr que la clé $ est cohérente.

Qu'est-ce qui peut éventuellement tourner mal?

+0

Juste essayé mon serveur memcached de telnet, get $ key ne retourne rien :) bizarre. – Shawn

+2

Est-ce le code complet? Vous ne semblez jamais mettre la clé à quelque chose d'utile (c'est-à-dire que vous le mettez à $ value, mais $ value est vide). – ZoFreX

Répondre

2

Il peut être confondu avec le troisième paramètre. Selon la documentation, il est pour un drapeau, pour activer la compression (utiliser MEMCACHE_COMPRESSED), puis le quatrième est un temps mort (nombre de secondes, ou un moment donné dans l'avenir)

Memcache::set(string $key, mixed $var [, int $flag [, int $expire ]])