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 套接字文件路径,例如 /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 个笔记

19
mbarriolinares at gmail dot com
11 年前
重要的是不要在每次运行时都调用 ->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);
}

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

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

不要与使用 'unix:///path/to/socket' 的 Memcache 混淆。
2
Robbie De Lise
12 年前
在我的 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