(PECL memcache >= 2.0.0)
Memcache::addServer — Añadir servidor memcache al grupo de conexiones
$host
[, int $port
= 11211
[, bool $persistent
[, int $weight
[, int $timeout
[, int $retry_interval
[, bool $status
[, callable $failure_callback
[, int $timeoutms
]]]]]]]] ) : boolMemcache::addServer() añade un servidor al grupo de conexiones. También se puede usar la función memcache_add_server().
Cuando se usa este método (opuestamente a Memcache::connect() y Memcache::pconnect()) la conexión no se establece hasta que es necesaria. De esta forma no hay sobrecarga al añadir un gran número de servidores en el grupo de conexiones, aunque no todos van a ser utilizados.
La conexión puede caer en cualquier momento usando cualquiera de los métodos, mientras otros servidores estén disponibles para hacer la petición el usuario no notará nada. Cualquier tipo de errores de socket o servidor Memcached (excepto out-of-memory) seguramente harán caer la conexión. Errores en el cliente como añadir una llave que ya existe no provocará la caida de la conexión.
Nota:
Esta función fué añadida en Memcache versión 2.0.0.
host
Apunta al host donde memcached está esperando conexiones. Este parámetro
también se puede especificar con otros transportes como
unix:///path/to/memcached.sock para usar domain UNIX sockets,
en este caso port
debe también
establecerse a 0.
port
Apunta al puerto donde memcache está esperando para conexiones. Establece este parámetro a 0 cuando se usan UNIX domain sockets.
Por favor note: port
será por defecto
memcache.default_port
en caso de no especificarse. Por esta razón, se recomienda especificar
el puerto explícitamente en la llamada a este método.
persistent
Controla el uso de una conexión persistente. Por defecto TRUE
.
weight
Número de segmentos para crear de este servidor, que a su vez controlan la probabilidad de que sea seleccionado. La probabilidad es relativa a la de peso total de todos los servidores.
timeout
Valor en segundos que se utilizará para conectar con el demonio. Piense dos veces antes de cambiar el valor predeterminado de 1 segundo - se puede perder todas las ventajas de la caché si su conexión es demasiado lenta.
retry_interval
Controla la frecuencia de reintentos cuando falla la conexión, el valor por defecto es
15 segundos. Si establece este parámetro a -1 desactivará el reintento automático.
Ni esta opción ni el parámetro persistent
tienen ningún efecto
cuando la extensión se carga dinámicamente a través de dl().
Cada conexión struct fallida tiene su propio timeout y antes de que caduque,
el struct será omitido cuando se selecionen backends para servir una petición.Cuando
caduque la conexión se reconectará satisfactoriamente o se marcará como fallida
por otros retry_interval
segundos. El típico efecto es
que cada servidor web hijo reintentará la conexión cada retry_interval
cuando se sirven páginas.
status
Controla si el servidor debe ser marcado como online. Estableciendo este parámetro
a FALSE
y retry_interval
a -1 permite a un servidor que falle
a ser mantenido en el grupo para no afectar el algoritmo de distribución de llaves.
Las peticiones a este servidor fallarán inmediatamente dependiendo en la opción
memcache.allow_failover
. Por defecto to TRUE
, que significa
que el servidor se considera online.
failure_callback
Permite al usuario a especificar la llamada a una función de retorno a ejectuar cuando se encuentre un error. La llamada de retorno se ejecuta antes de que se produzca la caída en la conexión. La función toma dos parámetros, el hostname y el puerto del puerto que ha fallado.
timeoutms
Cuando no se especifica port
, este método usará el valor
establecido en la directiva ini
memcache.default_port de PHP.
Si este valor se cambiara en cualquier lugar de la aplicación podría conducir
a resultados inesperados; por esta razón, es prudente especificar el puerto
explícitamente en la llamada a este método.
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
Ejemplo #1 Ejemplo 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);
?>