ConFoo: Call for paper is now Open

Memcached::addServer

(PECL memcached >= 0.1.0)

Memcached::addServerAñade un servidor a la agrupación de servidores

Descripción

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

Memcached::addServer() añade el servidor especificado a la agrupación de servidores. No se establece una conexión al servidor en esta operación, pero si se emplea la opción de distribución claves (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 fuera necesario añadir varios servidores, es mejor utilizar Memcached::addServers(), ya que la actualización sucede una única vez.

El mismo servidor podría aparecer varias veces en la agrupación de servidores, debido a que no se realiza ninguna comprobación de duplicados. Esta característica no es aconsejable; emplee en su lugar la opción weight para aumentar el peso de selección (importancia) de dicho servidor.

Parámetros

host

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

port

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

weight

El peso (importancia) del servidor relativo al peso total de todos los servidores en la agrupación. 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 dicho 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ñadir 2 servidores, de forma que el segundo
   tiene el doble de probabilidades de ser seleccionado. */
$m->addServer('mem1.dominio.com'1121133);
$m->addServer('mem2.dominio.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
5
mbarriolinares at gmail dot com
2 years 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
3 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