(PECL memcache >= 2.0.0)
Memcache::addServer — 向连接池中添加一个memcache服务器
$host
[, int $port
= 11211
[, bool $persistent
[, int $weight
[, int $timeout
[, int $retry_interval
[, bool $status
[, callback $failure_callback
[, int $timeoutms
]]]]]]]] )Memcache::addServer()增加一个服务器到连接池中。通过 Memcache::addServer() 打开的连接将会在脚本执行结束后自动关闭,也可以使用 Memcache::close()进行手动关闭。 您也可以使用 memcache_add_server()来添加服务器。
当使用这个方法的时候(与 Memcache::connect()和 Memcache::pconnect()相反) 网络连接并不会立刻建立,而是直到真正使用的时候才建立。 因此在加入大量服务器到连接池中时也是没有开销的,因为它们可能并不会被使用。
故障转移可能在方法的任何一个层次发生,通常只要其他服务器可用用户就不会感受到。任何的socket或memcache服务器级别的错误 (比如内存溢出)都可能导致故障转移。而一般的客户端错误比如使用Memcache::add尝试增加一个已经存在的key则不会导致故障转移。
Note:
这个方法在2.0.0版本加入Memcache。
host
要连接的memcached服务端监听的主机位置。这个参数通常指定其他类型的传输比如Unix域套接字使用
unix:///path/to/memcached.sock,这种情况下参数port
必须设置为0。
port
要连接的memcached服务端监听的端口。当使用UNIX域套接字连接时设置为0。
persistent
控制是否使用持久化连接。默认TRUE
。
weight
为此服务器创建的桶的数量,用来控制此服务器被选中的权重,单个服务器被选中的概率是相对于所有服务器weight总和而言的。
timeout
连接持续(超时)时间(单位秒),默认值1秒,修改此值之前请三思,过长的连接持续时间可能会导致失去所有的缓存优势。
retry_interval
服务器连接失败时重试的间隔时间,默认值15秒。如果此参数设置为-1表示不重试。此参数和persistent
参数在扩展以
dl()函数动态加载的时候无效。
每个失败的连接结构有自己的超时时间,并且在它失效之前选择后端服务请求时该结构会被跳过。一旦一个连接失效,
它将会被成功重新连接或被标记为失败连接以在下一个retry_interval
秒重连。
典型的影响是每个web服务子进程在服务于一个页面时将会每retry_interval
秒
尝试重新连接一次。
status
控制此服务器是否可以被标记为在线状态。设置此参数值为FALSE
并且retry_interval
参数
设置为-1时允许将失败的服务器保留在一个池中以免影响key的分配算法。对于这个服务器的请求会进行故障转移或者立即失败,
这受限于memcache.allow_failover
参数的设置。该参数默认TRUE
,表明允许进行故障转移。
failure_callback
允许用户指定一个运行时发生错误后的回调函数。回调函数会在故障转移之前运行。回调函数会接受到两个参数,分别是失败主机的 主机名和端口号。
timeoutms
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
Example #1 Memcache::addServer() 示例
<?php
/* OO API */
$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
$memcache->addServer('memcache_host2', 11211);
/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_add_server($memcache_obj, 'memcache_host2', 11211);
?>