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; } ?> ]]>