PHP 5.4.45 Released

Memcached::getServerByKey

(PECL memcached >= 0.1.0)

Memcached::getServerByKeyMap a key to a server

Descrição

public array Memcached::getServerByKey ( string $server_key )

Memcached::getServerByKey() returns the server that would be selected by a particular server_key in all the Memcached::*ByKey() operations.

Parâmetros

server_key

A chave identificando o servidor onde armazenar ou recuperar o valor. Em vez de fazer o hash do item, é feito o hash da chave do servidor quando decidindo com qual servidor memcached conectar. Isto permite que itens relacionados sejam agrupados em um único servidor para maior eficiência de operações múltiplas.

Valor Retornado

Returns an array containing three keys of host, port, and weight on success or FALSE on failure. Use Memcached::getResultCode() se necessário.

Exemplos

Exemplo #1 Memcached::getServerByKey() example

<?php
$m 
= new Memcached();
$m->addServers(array(
    array(
'mem1.domain.com'1121140),
    array(
'mem2.domain.com'1121140),
    array(
'mem3.domain.com'1121120),
));

$m->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLEtrue);

var_dump($m->getServerByKey('user'));
var_dump($m->getServerByKey('log'));
var_dump($m->getServerByKey('ip'));
?>

O exemplo acima irá imprimir algo similar à:

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)
}

add a note add a note

User Contributed Notes 1 note

up
2
zhaoyong dot lc at gmail dot com
2 years ago
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
To Top