(PECL memcached >= 0.1.0)
Memcached::getMulti — Obtener varios ítems
Memcached::getMulti() es similar a
Memcached::get(), pero en lugar de un único ítem
de clave, obtiene varios ítems cuyas claves se especifican en el array
keys
. Si se proporciona la variable
cas_tokens
, esta contendrá los token CAS para los
ítems que se hayan encontrado.
Nota:
A diferencia de Memcached::get() no es posible especificar una retrollamada de caché de lectura previa para Memcached::getMulti(), porque el protocolo memcache no provee información de las claves que no se encontraron en la petición de claves múltiple.
El parámetro flags
se puede emplear para especificar
opciones adicionales para Memcached::getMulti(). Actualmente,
la única opción disponible es
Memcached::GET_PRESERVE_ORDER
, que garantiza que las
claves sean devueltas en el mismo orden en que fueron solicitadas.
keys
Array de claves a obtener.
cas_tokens
La variable donde guardar los token CAS de los ítems encontrados.
flags
Los indicadores para la operación de obtención (get).
Devuelve el array de ítems encontrados o FALSE
en caso de error.
Emplee Memcached::getResultCode() si fuera necesario.
Ejemplo #1 Ejemplo de Memcached::getMulti()
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$ítems = array(
'clave1' => 'valor1',
'clave2' => 'valor2',
'clave3' => 'valor3'
);
$m->setMulti($ítems);
$resultado = $m->getMulti(array('clave1', 'clave3', 'clave_errónea'), $cas);
var_dump($resultado, $cas);
?>
El resultado del ejemplo sería algo similar a:
array(2) { ["clave1"]=> string(6) "valor1" ["clave3"]=> string(6) "valor3" } array(2) { ["clave1"]=> float(2360) ["clave3"]=> float(2362) }
Ejemplo #2 Ejemplo de Memcached::GET_PRESERVE_ORDER
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$data = array(
'foo' => 'foo-data',
'bar' => 'bar-data',
'baz' => 'baz-data',
'lol' => 'lol-data',
'kek' => 'kek-data',
);
$m->setMulti($data, 3600);
$null = null;
$claves = array_keys($data);
$claves[] = 'zoo';
$obtenidas = $m->getMulti($claves, $null, Memcached::GET_PRESERVE_ORDER);
foreach ($obtenidas as $c => $v) {
echo "$c $v\n";
}
?>
El resultado del ejemplo sería algo similar a:
foo foo-data bar bar-data baz baz-data lol lol-data kek kek-data zoo