Memcached::addServer

(PECL memcached >= 0.1.0)

Memcached::addServerAñade un servidor al conjunto de servidores

Descripción

public bool Memcached::addServer ( string $host , int $port [, int $weight = 0 ] )

Memcached::addServer() añade un servidor determinado al conjunto de servidores. No se establece conexión al servidor en esta operación, pero si se está usando la opción consistent key distribution (a través de Memcached::DISTRIBUTION_CONSISTENT o Memcached::OPT_LIBKETAMA_COMPATIBLE), algunas de las estructuras de datos internas deberán ser actualizadas. Por lo tanto, si se necesita añadir varios servidores, es mejor usar Memcached::addServers() ya que la actualización sucede una sola vez.

Puede suceder que el mismo servidor aparezca varias veces en el conjunto de servidores, por que no se comprueban duplicados. Por lo tanto, no se aconseja. En su lugar, use la opción weight para incrementar la importancia de uso del servidor respecto los demás servidores.

Parámetros

host

El nombre del host del servidor memcache. Si el nombre del host no es válido, las operaciones con datos devolverán el código Memcached::RES_HOST_LOOKUP_FAILURE como resultado.

port

El puerto en que memcache está funcionado. Normalmente es 11211.

weight

La importancia del servidor relativa a la importancia total de todos los servidores en el conjunto de servidores. Controla la probabilidad de que un servidor sea elegido para realizar operaciones. Solamente se utiliza para la opción de distribución consistente y normalmente corresponde a la cantidad de memoria disponible para memcache en el servidor.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de Memcached::addServer()

<?php
$m 
= new Memcached();

/* Añade 2 servidores, de forma que el segundo
   tiene el doble de probabilidades de ser selecionado. */
$m->addServer('mem1.domain.com'1121133);
$m->addServer('mem2.domain.com'1121167);
?>

Ver también

add a note add a note

User Contributed Notes 3 notes

up
7
Dave
1 year ago
As of version 2.0.0b1 you can use Unix socket.

<?php
$m
= new Memcached();
$m->addServer('/path/to/socket',0);
?>

Not to be confused with Memcache that use 'unix:///path/to/socket'
up
4
mbarriolinares at gmail dot com
1 year ago
Important to not call ->addServers() every run -- only call it if no servers exist (check getServerList() ); otherwise, since addServers() does not check for dups, it will let you add the same server again and again and again, resultings in hundreds if not thousands of connections to the MC daemon. Specially when using FastCGI.

Example:

<?php
class Cache {
        private
$id;
        private
$obj;

        function
__construct($id){
               
$this->id = $id;
               
$this->obj = new Memcached($id);
        }

        public function
connect($host , $port){
               
$servers = $this->obj->getServerList();
                if(
is_array($servers)) {
                        foreach (
$servers as $server)
                                if(
$server['host'] == $host and $server['port'] == $port)
                                        return
true;
                }
                return
$this->obj->addServer($host , $port);
        }

}
?>
up
1
Robbie De Lise
2 years ago
On my Debian Squeeze system I was getting WRITE FAILURE errors. After debugging and finally tcpdump it seems that the problem was me adding the server 'localhost', which resolved to '::1' (ipv6) while the default memcached server on debian only listens to '127.0.0.1' (ipv4). DNS automatically prefers ipv6 over ipv4.

I added the server '127.0.0.1' instead and everything worked. You could also disable ipv6 or have memcached listen on ::1
To Top