2024年PHP开发者大会日本站

Memcached::addServer

(PECL memcached >= 0.1.0)

Memcached::addServer向服务器池添加服务器

描述

public Memcached::addServer(string $host, int $port, int $weight = 0): bool

Memcached::addServer() 将指定的服务器添加到服务器池。此时不会建立与服务器的连接,但是如果您使用一致的键分布选项(通过Memcached::DISTRIBUTION_CONSISTENTMemcached::OPT_LIBKETAMA_COMPATIBLE),一些内部数据结构将需要更新。因此,如果您需要添加多个服务器,最好使用 Memcached::addServers(),因为更新只发生一次。

同一服务器可以多次出现在服务器池中,因为没有进行重复检查。这不建议这样做;相反,请使用weight选项来增加此服务器的选择权重。

参数

host

Memcache服务器的主机名。如果主机名无效,与数据相关的操作将设置Memcached::RES_HOST_LOOKUP_FAILURE结果代码。从2.0.0b1版本开始,此参数也可以指定unix socket 文件路径,例如 /path/to/memcached.sock 来使用UNIX域套接字,在这种情况下,port也必须设置为0

port

Memcache运行的端口。通常情况下,这是11211。从2.0.0b1版本开始,使用UNIX域套接字时,将此参数设置为0

weight

服务器相对于池中所有服务器总权重的权重。这控制着选择服务器进行操作的概率。这仅在使用一致的分布选项时使用,通常对应于该服务器上可用于memcache的内存量。

返回值

成功返回true,失败返回false

示例

示例 #1 Memcached::addServer() 示例

<?php
$m
= new Memcached();

/* 添加2个服务器,以便第二个服务器
被选中的可能性是第一个服务器的两倍。 */
$m->addServer('mem1.domain.com', 11211, 33);
$m->addServer('mem2.domain.com', 11211, 67);
?>

参见

添加注释

用户贡献的注释 3 条注释

mbarriolinares at gmail dot com
12年前
重要的是不要在每次运行时都调用 ->addServers() -- 只有在不存在服务器时才调用它 (检查 getServerList());否则,由于 addServers() 不检查重复项,它将允许您一次又一次地添加相同的服务器,导致成百上千个到 MC 守护进程的连接。尤其是在使用 FastCGI 时。

示例

<?php
class Cache {
private
$id;
private
$obj;

function
__construct($id){
$this->id = $id;
$this->obj = new Memcached($id);
}

public function
connect($host , $port){
$servers = $this->obj->getServerList();
if(
is_array($servers)) {
foreach (
$servers as $server)
if(
$server['host'] == $host and $server['port'] == $port)
return
true;
}
return
$this->obj->addServer($host , $port);
}

}
?>
Dave
12年前
从2.0.0b1版本开始,您可以使用Unix套接字。

<?php
$m
= new Memcached();
$m->addServer('/path/to/socket',0);
?>

不要与使用'unix:///path/to/socket'的Memcache混淆。
Robbie De Lise
13年前
在我的 Debian Squeeze 系统上,我遇到了写入失败 (WRITE FAILURE) 错误。经过调试和最终使用 tcpdump 抓包后,问题似乎在于我添加了服务器 'localhost',它解析为 '::1' (IPv6),而 Debian 上默认的 memcached 服务器只监听 '127.0.0.1' (IPv4)。DNS 自动优先使用 IPv6 而不是 IPv4。

我改用 '127.0.0.1' 作为服务器地址,一切正常。你也可以禁用 IPv6 或让 memcached 监听 ::1。
To Top