文字

Memcached::getServerByKey

(PECL memcached >= 0.1.0)

Memcached::getServerByKey获取一个key所映射的服务器信息

说明

public array Memcached::getServerByKey ( string $server_key )

Memcached::getServerByKey() 返回server_key所映射的服务器, Memcached::*ByKey() 系列方法的中的server_key参数, 实际上就是用来获取 操作的服务器的.(译注: 可以这样理解, *ByKey系列函数首先调用 Memcached::getServerByKey() 获取服务器, 然后在此服务器上进行操作.)

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目,而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

返回值

成功时返回 TRUE , 或者在失败时返回 FALSE 。 如需要则使用 Memcached::getResultCode()

范例

Example #1 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' ));
?>

以上例程的输出类似于:

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

用户评论:

[#1] zhaoyong dot lc at gmail dot com [2013-03-29 06:32:14]

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($key1);
}
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

上一篇: 下一篇: