Memcache::addServer

Memcache::addServer

Memcache::addServer — 向连接池中添加一个memcache服务器

1、接口说明

bool Memcache::addServer ( string $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则不会导致故障转移。

2、参数说明
(1)host
memcached服务端监听的主机地址。
(2)port
memcached服务端监听端口。
(3)persistent
控制是否使用持久化连接。默认TRUE。
(4)weight
为此服务器创建的桶的数量,用来控制此服务器被选中的权重,单个服务器被选中的概率是相对于所有服务器weight总和而言的。
(5)timeout
连接持续(超时)时间(单位秒),默认值1秒,修改此值之前请三思,过长的连接持续时间可能会导致失去所有的缓存优势。
(6)retry_interval
服务器连接失败时重试的间隔时间,默认值15秒。如果此参数设置为-1表示不重试。此参数和persistent参数在扩展以 dl()函数动态加载的时候无效。
每个失败的连接结构有自己的超时时间,并且在它失效之前选择后端服务请求时该结构会被跳过。一旦一个连接失效, 它将会被成功重新连接或被标记为失败连接以在下一个retry_interval秒重连。 典型的影响是每个web服务子进程在服务于一个页面时将会每retry_interval秒 尝试重新连接一次。
(7)status
控制此服务器是否可以被标记为在线状态。设置此参数值为FALSE并且retry_interval参数 设置为-1时允许将失败的服务器保留在一个池中以免影响key的分配算法。对于这个服务器的请求会进行故

3、返回值
成功时返回 TRUE, 或者在失败时返回 FALSE。

4、示例

<?php
/* 面向过程*/
$memcache = memcache_connect("memcache_host", 11211);
memcache_add_server($memcache, 'memcache_host2', 11211);

/* 面向对象*/
$memcacheObj = new Memcache;
$memcacheObj->addServer('memcache_host', 11211);
$memcacheObj->addServer('memcache_host2', 11211);
?>