# Memcache::addServer

(PECL memcache >= 2.0.0)

Memcache::addServer — Añadir servidor memcache al grupo de conexiones

### Descripción

Memcache::addServer(
string `$host`,
int `$port` = 11211,
bool `$persistent` = ?,
int `$weight` = ?,
int `$timeout` = ?,
int `$retry_interval` = ?,
bool `$status` = ?,
callable `$failure_callback` = ?,
int `$timeoutms` = ?
): bool

Memcache::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.

### Parámetros

`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`

### Notas

Advertencia

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.

### Valores devueltos

Devuelve `true` en caso de éxito o `false` en caso de error.

### Ejemplos

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);
?>`

### Ver también

- Memcache::connect() - Abre una conexión al servidor memcached
- Memcache::pconnect() - Abre una conexión persistente a memcached
- Memcache::close() - Cierra la conexión al servidor memcached
- Memcache::setServerParams() - Cambia parámetros del servidor y estado en tiempo de ejecucción
- Memcache::getServerStatus() - Devuelve el estado del servidor