Memcache::addServer

memcache_add_server

(PECL memcache >= 2.0.0)

Memcache::addServer -- memcache_add_serverAdiciona um servidor memcached ao pool de conexão

Descrição

Memcache::addServer(
    string $host,
    int $port = 11211,
    bool $persistent = ?,
    int $weight = ?,
    int $timeout = ?,
    int $retry_interval = ?,
    bool $status = ?,
    callable $failure_callback = ?,
    int $timeoutms = ?
): bool
memcache_add_server(
    Memcache $memcache,
    string $host,
    int $port = 11211,
    bool $persistent = ?,
    int $weight = ?,
    int $timeout = ?,
    int $retry_interval = ?,
    bool $status = ?,
    callable $failure_callback = ?,
    int $timeoutms = ?
): bool

Memcache::addServer() adiciona um servidor ao pool de conexão.

Ao usar este método (ao contrário de Memcache::connect() e Memcache::pconnect()) a conexão de rede não é estabelecida até que seja realmente necessária. Portanto, não há sobrecarga na adição de um grande número de servidores ao pool, mesmo que eles não sejam todos usados.

O failover pode ocorrer em qualquer estágio em qualquer um dos métodos, desde que outros servidores estejam disponíveis, a solicitação não será notada pelo usuário. Qualquer tipo de erro de nível de soquete ou servidor Memcached (exceto falta de memória) pode disparar o failover. Erros normais do cliente, como adicionar uma chave existente, não dispararão um failover.

Nota:

Esta função foi adicionada ao Memcache versão 2.0.0.

Parâmetros

host

Aponta para o host onde o memcached está escutando conexões. Este parâmetro também pode especificar outros transportes como unix:///path/to/memcached.sock para usar soquetes de domínio UNIX, neste caso port também deve ser definido como 0.

port

Aponta para a porta onde o memcached está escutando conexões. Defina este parâmetro como 0 ao usar soquetes de domínio UNIX.

Observe: port assume como padrão memcache.default_port se não for especificado. Por esse motivo, é sensato especificar a porta explicitamente nessa chamada de método.

persistent

Controla o uso de uma conexão persistente. Padrão é true.

weight

Número de buckets a serem criados para este servidor que, por sua vez, controlam sua probabilidade de ser selecionado. A probabilidade é relativa ao peso total de todos os servidores.

timeout

Valor em segundos que será usado para conectar ao daemon. Pense duas vezes antes de alterar o valor padrão de 1 segundo - podem ser perdidas todas as vantagens do cache se a conexão for muito lenta.

retry_interval

Controla a frequência com que um servidor com falha será tentado novamente, o valor padrão é 15 segundos. Definir este parâmetro como -1 desabilita a repetição automática. Nem este nem o parâmetro persistent têm qualquer efeito quando a extensão é carregada dinamicamente via dl().

Cada estrutura de conexão com falha tem seu próprio tempo limite e antes que ela expire a estrutura será ignorada ao selecionar backends para atender a uma solicitação. Uma vez expirada, a conexão será reconectada com sucesso ou marcada como falhada por mais retry_interval segundos. O efeito típico é que cada filho do servidor web tentará novamente a conexão a cada retry_interval segundos ao atender uma página.

status

Controla se o servidor deve ser sinalizado como online. Definir este parâmetro como false e retry_interval como -1 permite que um servidor com falha seja mantido no pool para não afetar o algoritmo de distribuição de chaves. As solicitações para este servidor então farão failover ou falharão imediatamente dependendo da configuração memcache.allow_failover. Padrão é true, significando que o servidor deve ser considerado online.

failure_callback

Permite que o usuário especifique uma função de retorno para ser executada ao encontrar um erro. A função de retorno é executada antes da tentativa de failover. A função leva dois parâmetros, o nome do host e a porta do servidor com falha.

timeoutms

Valor Retornado

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

Exemplos

Exemplo #1 Exemplo de Memcache::addServer()

<?php

/* API orientada a objeto */

$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
$memcache->addServer('memcache_host2', 11211);

/* API procedural */

$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_add_server($memcache_obj, 'memcache_host2', 11211);

?>

Notas

Aviso

Quando o port não é especificado, este método assume como padrão o conjunto de valores da diretiva INI memcache.default_port do PHP. Se este valor foi alterado em outro lugar na aplicação, isso pode levar a resultados inesperados: por este motivo, é sensato sempre especificar a porta explicitamente nesta chamada de método.

Veja Também