Fonctions de rappel sur clé absente

Les fonctions de rappel sur clĂ© absente sont appelĂ©es quand un Ă©lĂ©ment ne peut pas ĂȘtre lu sur le serveur. La fonction de rappel reçoit un objet Memcached, la clĂ© demandĂ©e, et une valeur de variable par rĂ©fĂ©rence. La fonction de rappel est alors responsable d'affecter la valeur, puis de retourner true ou false. Si la fonction de rappel retourne true Memcached va stocker la valeur ainsi créée dans le serveur, et la retourner Ă  la fonction appelante. Seules Memcached::get() et Memcached::getByKey() supportent ces fonctions, car le protocole memcache ne fournit aucune information sur l'absence de clĂ© dans une requĂȘte multiclĂ©.

Exemple #1 Fonctions de rappel sur clé absente

<?php
$m
= new Memcached();
$m->addServer('localhost', 11211);

$profile_info = $m->get('user:'.$user_id, 'user_info_cb');

function
user_info_cb($memc, $key, &$value)
{
$user_id = substr($key, 5);
/* Lit un profil dans une base de données */
/* ... */
$value = $profile_info;
return
true;
}
?>
add a note

User Contributed Notes 2 notes

up
3
chadkouse ¶
14 years ago
Or just set the value within the callback with your own custom expiration time and return false.  I think it's cleaner.
up
2
oorza2k5 at gmail dot com ¶
17 years ago
This isn't specified anywhere, so I had a gander at the source...

The expiry on read-through cache set values is set to 0, or forever.  This means if you want your key to implicitly expire, don't use the callback methods, instead check for boolean false as a return and manually set the value, at least for now.