The parameter server_key is very confusing, it's not a server key for MemCached Server, but it's key,in key-value pair which you stored in server.
<?php
$m = new Memcached;
$m->addServers(array(
array('127.0.0.1',11212),
array('127.0.0.1',11211)
));
for($i=0;$i<10;$i++){
$key = 'key_'.$i;
$m->add($key, 1);
}
for($i=0;$i<10;$i++) {
$key = 'key_'.$i;
$arr = $m->getServerByKey($key);
echo ($key.":\t".$arr['port']."\n");
}
?>
key_0: 11212
key_1: 11211
key_2: 11212
key_3: 11212
key_4: 11212
key_5: 11211
key_6: 11211
key_7: 11212
key_8: 11212
key_9: 11211
Memcached::getServerByKey
(PECL memcached >= 0.1.0)
Memcached::getServerByKey — Hacer corresponder una clave con un servidor
Descripción
$server_key
)
Memcached::getServerByKey() devuelve el servidor que
será seleccionado por una server_key en particular para todas
las operaciones Memcached::*ByKey().
Parámetros
-
server_key -
La clave que identifica el servidor en donde guardar el valor o desde el que recuperarlo. En lugar de realizar un hash en la clave real para el elemento, se realiza el hash en la clave del servidor al decidir con cual servidor almacenado en memoria caché conversar. Esto permite a los elementos relacionados que sean agrupados en un único servidor para más eficacia con multioperaciones.
Valores devueltos
Devuelve un array que contiene tres claves: host,
port, y weight en caso de éxito,
o FALSE en case de error.
Use Memcached::getResultCode() si es necesario.
Ejemplos
Ejemplo #1 Ejemplo de Memcached::getServerByKey()
<?php
$m = new Memcached();
$m->addServers(array(
array('mem1.domain.com', 11211, 40),
array('mem2.domain.com', 11211, 40),
array('mem3.domain.com', 11211, 20),
));
$m->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
var_dump($m->getServerByKey('user'));
var_dump($m->getServerByKey('log'));
var_dump($m->getServerByKey('ip'));
?>
El resultado del ejemplo sería algo similar a:
array(3) {
["host"]=>
string(15) "mem3.domain.com"
["port"]=>
int(11211)
["weight"]=>
int(20)
}
array(3) {
["host"]=>
string(15) "mem2.domain.com"
["port"]=>
int(11211)
["weight"]=>
int(40)
}
array(3) {
["host"]=>
string(15) "mem2.domain.com"
["port"]=>
int(11211)
["weight"]=>
int(40)
}
