Memcached::addServers

(PECL memcached >= 0.1.1)

Memcached::addServers将多个服务器添加到服务器池

说明

public Memcached::addServers(array $servers): bool

Memcached::addServers()servers 添加到服务器池。 servers 中的每个条目都应该是一个包含主机名、端口和可选服务器权重的数组。此时不会建立到服务器的连接。

同一个服务器可以在服务器池中出现多次,因为不会进行重复检查。这不可取;相反,使用 weight 选项来增加该服务器的选择权重。

参数

array

要添加到池中的服务器数组。

返回值

成功时返回 true,失败时返回 false

示例

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

<?php
$m
= new Memcached();

$servers = array(
array(
'mem1.domain.com', 11211, 33),
array(
'mem2.domain.com', 11211, 67)
);
$m->addServers($servers);
?>

参见

添加说明

用户贡献的说明 2 个说明

Aliaser
8 年前
对于正确的故障转移机制

$memcached = new Memcached();
$memcached->setOption(Memcached::OPT_CONNECT_TIMEOUT, 10);
$memcached->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$memcached->setOption(Memcached::OPT_SERVER_FAILURE_LIMIT, 2);
$memcached->setOption(Memcached::OPT_REMOVE_FAILED_SERVERS, true);
$memcached->setOption(Memcached::OPT_RETRY_TIMEOUT, 1);
$memcached->addServers($servers);

Memcached::OPT_DISTRIBUTION:将其设置为一致性哈希。如果一个 Memcached 节点已死,它的键(以及仅它的键)将被均匀地分布到其他节点。这就是魔法的实现方式。这与在 ->addServers() 调用中删除一个服务器完全不同。

Memcached::OPT_SERVER_FAILURE_LIMIT:在服务器被标记为 DEAD 并从服务器列表中移除之前,连接问题的次数(默认:5)。

Memcached::OPT_REMOVE_FAILED_SERVERS:将其设置为「true」,以启用移除已死服务器。

Memcached::OPT_RETRY_TIMEOUT:在节点被声明为 DEAD 后,libmemcached 将在这么多秒后再次尝试连接。这里我将其设置为 1 秒,但我正在处理的大多数情况下运行时间不到 100 毫秒的 PHP 脚本。这对于 cron/daemonize 脚本才有用。

Memcached::OPT_CONNECT_TIMEOUT:服务器被视为 DEAD 后的超时时间。由于我的服务器都在同一个 LAN 上,ping 时间约为 0.5 毫秒,因此 10 毫秒足够长以将服务器视为 DEAD。请注意,您必须等待两倍于该时间才能将节点标记为 DEAD,因此如果为 1000 毫秒,您的脚本将锁定 2 秒才能忽略 DEAD 服务器。这可能会严重影响您的响应时间,这就是我将其设置得很低的原因。

作者是 Dugwood 的 Yvan
Michael Brenden
13 年前
请参阅 __construct() 的说明

重要的是不要在每次运行时都调用 ->addServers() -- 只有在没有服务器存在的情况下(检查 getServerList());否则,由于 addServers() 不会检查重复项,它将允许您一次又一次地添加相同的服务器,从而导致对 MC 守护程序的数百次甚至数千次连接。
To Top