(PECL memcache >= 2.0.0)
Memcache::addServer -- memcache_add_server — 新增 memcached 服务器到连接池
$host,$port = 11211,$persistent = ?,$weight = ?,$timeout = ?,$retry_interval = ?,$status = ?,$failure_callback = ?,$timeoutms = ?$memcache,$host,$port = 11211,$persistent = ?,$weight = ?,$timeout = ?,$retry_interval = ?,$status = ?,$failure_callback = ?,$timeoutms = ?Memcache::addServer() 增加服务器到连接池。
当使用这个方法的时候(与Memcache::connect()和Memcache::pconnect()相反) 网络连接并不会立刻建立,而是直到真正使用的时候才建立。 因此在加入大量服务器到连接池中时也是没有开销的,因为它们可能并不会被使用。
故障转移可能在方法的任何一个层次发生,通常只要其他服务器可用用户就不会感受到。任何的socket或memcache服务器级别的错误 (比如内存溢出)都可能导致故障转移。而一般的客户端错误比如使用Memcache::add尝试增加一个已经存在的key则不会导致故障转移。
注意: 这个方法在2.0.0版本加入Memcache。
hostunix:///path/to/memcached.sock,这种情况下参数port
必须设置为0。
port0。
注意:如果未指定 port,默认为 memcache.default_port。因此,明智的做法是调用此方法时明确指定端口。
persistenttrue。
weighttimeoutretry_intervalpersistent参数在扩展以
dl()函数动态加载的时候无效。
每个失败的连接结构有自己的超时时间,并且在它失效之前选择后端服务请求时该结构会被跳过。一旦一个连接失效,
它将会被成功重新连接或被标记为失败连接以在下一个retry_interval秒重连。
典型的影响是每个web服务子进程在服务于一个页面时将会每retry_interval秒
尝试重新连接一次。
statusfalse并且retry_interval参数
设置为-1时允许将失败的服务器保留在一个池中以免影响key的分配算法。对于这个服务器的请求会进行故障转移或者立即失败,
这受限于memcache.allow_failover参数的设置。该参数默认true,表明允许进行故障转移。
failure_callbacktimeoutms示例 #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);
?>
当 port 未指定时,此方法默认为 PHP ini 指令 memcache.default_port
的值。如果此值在应用程序的其他地方更改,可能会导致意外结果:因此,明智的做法是始终在这个方法调用。