Memcached::addServer

(PECL memcached >= 0.1.0)

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

Descripción

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

Memcached::addServer() añade el servidor especificado a la provisión de servidores. En esta operación no se establece una conexión al servidor, aunque si se emplea la opción de distribución de claves (a través de Memcached::DISTRIBUTION_CONSISTENT o Memcached::OPT_LIBKETAMA_COMPATIBLE), algunas de las estructuras de datos internas deberán ser actualizadas. Así, si fuera necesario añadir varios servidores, es mejor utilizar Memcached::addServers(), ya que la actualización se realiza una única vez.

El mismo servidor podría aparecer varias veces en la provisió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 relacinadas con datos establecerán el código de resultado Memcached::RES_HOST_LOOKUP_FAILURE. A partir de la versión 2.0.0b1, este parámetro puede también especificar la ruta de un socket de unix, p.ej., /ruta/a/memcached.sock, para emplear socket de dominio de UNIX; en este caso también se debe establecer port a 0.

port

El puerto en que memcache está funcionado. Normalmente es 11211. A partir de la versión 2.0.0b1, se debe establecer este parámetro a 0 al utilizar socket de dominio UNIX.

weight

El peso (importancia) del servidor relativo al peso total de todos los servidores en la provisió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', 11211, 33);
$m->addServer('mem2.dominio.com', 11211, 67);
?>

Ver también

add a note add a note

User Contributed Notes 3 notes

up
10
Dave
12 years 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
8
mbarriolinares at gmail dot com
12 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
0
Robbie De Lise
13 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