Memcached::addServer

(PECL memcached >= 0.1.0)

Memcached::addServerAñade un servidor al grupo

Descripción

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

Memcached::addServer() añade el servidor indicado al grupo de servidores. No se establece ninguna conexión en ese momento, pero si se utiliza la clave de distribución por hash consistente (a través de Memcached::DISTRIBUTION_CONSISTENT o Memcached::OPT_LIBKETAMA_COMPATIBLE), ciertas estructuras internas van a ser actualizadas. Por lo tanto, si es necesario añadir varios servidores, se recomienda utilizar Memcached::addServers() para que la actualización ocurra una sola vez.

El mismo servidor puede aparecer varias veces en el grupo, ya que no se realiza ninguna búsqueda de duplicados. Esto no es recomendado: en su lugar, utilice el argumento weight para aumentar el peso de un servidor en la selección.

Parámetros

host

El nombre de host del servidor memcache. Si el nombre de host no es válido, las operaciones sobre los datos van a definir el código de resultado Memcached::RES_HOST_LOOKUP_FAILURE. Desde la versión 2.0.0b1, este argumento también puede especificar la ruta hacia un socket Unix, por ejemplo; /ruta/hacia/memcached.sock para utilizar el socket de dominio Unix, y en este caso, el argumento port también debe ser definido a 0.

port

El puerto en el que memcache funciona. Generalmente, es 11211. Desde la versión 2.0.0b1, defina este argumento a 0 cuando se utilicen sockets de dominio Unix.

weight

El peso del servidor relativamente al peso total de todos los servidores. Esto controla la probabilidad de que un servidor sea seleccionado durante las operaciones. Esta opción solo se utiliza con la distribución consistente, y generalmente, esto corresponde al total de memoria disponible en este servidor.

Valores devueltos

Esta función retorna true en caso de éxito o false si ocurre un error.

Ejemplos

Ejemplo #1 Ejemplo con Memcached::addServer()

<?php
$m
= new Memcached();

/* Añade dos servidores, y el segundo es dos veces
más solicitado que el primero */
$m->addServer('mem1.domain.com', 11211, 33);
$m->addServer('mem2.domain.com', 11211, 67);
?>

Ver también

add a note

User Contributed Notes 3 notes

up
19
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
16
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
2
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