PHP 8.4.1 Released!

Memcached::addServer

(PECL memcached >= 0.1.0)

Memcached::addServerAdiciona um servidor ao pool de servidores

Descrição

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

Memcached::addServer() adiciona o servidor especificado ao pool de servidores. Nenhuma conexão é estabelecida com o servidor neste momento, mas se você estiver usando a opção de distribuição de key consistente (via Memcached::DISTRIBUTION_CONSISTENT ou Memcached::OPT_LIBKETAMA_COMPATIBLE), algumas das estruturas de dados internas terão que ser atualizadas. Portanto, se você precisar adicionar vários servidores, é melhor usar o Memcached::addServers(), pois a atualização ocorrerá apenas uma vez.

O mesmo servidor pode aparecer várias vezes no pool de servidores porque nenhuma verificação de duplicação é feita. Isso não é aconselhável; em vez disso, use weight para aumentar o peso da seleção desse servidor.

Parâmetros

host

O nome do host do servidor memcache. Se o nome do host for inválido, as operações relacionadas a dados definirão o código de resultado Memcached::RES_HOST_LOOKUP_FAILURE. A partir da versão 2.0.0b1, este parâmetro também pode especificar o caminho de um arquivo de socket unix ex. /path/to/memcached.sock para usar sockets de domínio UNIX, neste caso, port também deve ser definida como 0.

port

A porta na qual o memcache está em execução. Geralmente, é 11211. A partir da versão 2.0.0b1, defina esse parâmetro como 0 ao usar sockets de domínio UNIX.

weight

O peso do servidor relativo ao peso total de todos os servidores no pool. Isso controla a probabilidade do servidor ser selecionado para operações. Isso é usado apenas com opção de distribuição consistente e geralmente corresponde à quantidade de memória disponível para memcache naquele servidor.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Exemplos

Exemplo #1 Memcached::addServer() exemplo

<?php
$m
= new Memcached();

/* Adiciona 2 servidores, para que o segundo
tem duas vezes mais chances de ser selecionado. */
$m->addServer('mem1.domain.com', 11211, 33);
$m->addServer('mem2.domain.com', 11211, 67);
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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
15
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