Retrollamadas
Retrollamadas de resultados
Las retrollamadas (callback) de resultados son invocadas por los métodos
Memcached::getDelayed o
Memcached::getDelayedBykey por cada ítem del
conjunto de resultados. A la retrollamada se le proporciona el objeto Memcached y el array
con la información del ítem. La retrollamada no tiene que devolver nada.
Ejemplo retrollamada de resultados
addServer('localhost', 11211);
$items = array(
'clave1' => 'valor1',
'clave2' => 'valor2',
'clave3' => 'valor3'
);
$m->setMulti($items);
$m->getDelayed(array('clave1', 'clave3'), true, 'rll_resultados');
function rll_resultados($memc, $item)
{
var_dump($item);
}
?>
]]>
&example.outputs.similar;
string(6) "clave1"
["value"]=>
string(6) "valor1"
["cas"]=>
float(49)
}
array(3) {
["key"]=>
string(6) "clave3"
["value"]=>
string(6) "valor3"
["cas"]=>
float(50)
}
]]>
Retrollamadas de caché de lectura previa
Las retrollamadas de caché de lectura previa son invocadas cuando un ítem no puede ser obtenido
de un servidor. A la retrollamada se le proporciona el objecto Memcached, la clave
solicitada y el valor por referencia de la variable. La retrollamada se encarga de
definir el valor y devolver true o false. Si la retrollamada devuelve true,
Memcached guardará el valor en el servidor y lo devolverá a la
función de llamada original. Solamente Memcached::get y
Memcached::getByKey admiten estas retrollamadas,
ya que el protocolo memcache no provee información sobre las claves
que no fueron encontradas en la petición de varias claves.
Ejemplo de lectura de retrollamada
addServer('localhost', 11211);
$info_perfil = $m->get('user:'.$id_usuario, 'rll_info_usuario');
function rll_info_usuario($memc, $clave, &$valor)
{
$id_usuario = substr($clave, 5);
/* buscar el prefil en la BD */
/* ... */
$valor = $info_perfil;
return true;
}
?>
]]>