(mongodb >=1.0.0)
MongoDB\Driver\ReadPreference::__construct — Cria uma nova preferência de leitura
$mode
, ?array $tagSets
= null
, ?array $options
= null
)Constrói um novo MongoDB\Driver\ReadPreference, que é um objeto de valor imutável.
mode
Valor | Descrição |
---|---|
"primary" |
Todas as operações são lidas do conjunto de réplicas primário atual. Esta é a preferência de leitura padrão do MongoDB. |
"primaryPreferred" |
Na maioria das situações, as operações são lidas a partir dos membros primários, mas se não estiver disponível, as operações são lidas a partir dos membros secundários. |
"secondary" |
Todas as operações são lidas nos membros secundários do conjunto de réplicas. |
"secondaryPreferred" |
Na maioria das situações, as operações são lidas a partir de membros secundários, mas se nenhum membro secundário estiver disponível, as operações são lidas a partir do primário. |
"nearest" |
Operações lidas do membro do conjunto de réplicas com a menor latência de rede, independentemente do tipo do membro. |
tagSets
Os conjuntos de tags permitem direcionar operações de leitura para membros específicos de um
conjunto de réplicas. Este parâmetro deve ser um array de arrays associativos, cada
um contendo zero ou mais pares chave/valor. Ao selecionar um servidor para
uma operação de leitura, o driver tenta selecionar um nó que tenha todas as tags em um
conjunto (ou seja, o array associativo de pares chave/valor). Se a seleção falhar,
o driver tentará conjuntos subsequentes. Um conjunto de tags vazio
(array()
) corresponderá a qualquer nó e pode ser usado como
substituto.
Tags não são compatíveis com o modo "primary"
e,
em geral, só se aplicam ao selecionar um membro secundário de um conjunto para uma
operação de leitura. No entanto, o modo "nearest"
, quando
combinado com um conjunto de tags, seleciona o membro correspondente com a menor
latência de rede. Este membro pode ser um primário ou um secundário.
options
Opção | Tipo | Descrição |
---|---|---|
hedge | object|array |
Especifica se devem ser usadas » leituras protegidas, que são suportadas pelo MongoDB 4.4+ para consultas fragmentadas.
As leituras protegidas do servidor estão disponíveis para todas as preferências de leitura não primárias
e são habilitadas por padrão ao usar o modo |
maxStalenessSeconds | int |
Especifica um atraso máximo de replicação, ou "inatividade", para leituras de secundários. Quando a inatividade estimada de um secundário excede esse valor, o driver deixa de usá-lo para operações de leitura.
Se especificada, a inatividade máxima deve ser um número inteiro de 32 bits com sinal,
maior ou igual a
O padrão é
Esta opção não é compatível com o modo |
mode
for inválido.tagSets
for fornecido para uma preferência de leitura primária ou estiver malformado (ou seja, não é uma array de zero ou mais documentos)."maxStalenessSeconds"
for fornecida para uma preferência de leitura primária ou estiver fora do intervalo.
Versão | Descrição |
---|---|
PECL mongodb 1.20.0 |
Passar um int no parâmetro mode
tornou-se DEFASADO.
|
PECL mongodb 1.8.0 |
Adcionada a opção "hedge" .
|
PECL mongodb 1.3.0 |
O parâmetro |
PECL mongodb 1.2.0 |
Adicionado um terceiro parâmetro |
Exemplo #1 Exemplo de MongoDB\Driver\ReadPreference::__construct()
<?php
/* Prefere um nó secundário, mas volta para um nó primário. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED));
/* Prefere um nó na central de dados de Nova Iorque com a latência mais baixa. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::NEAREST, [['dc' => 'ny']]));
/* Exige um nó secundário cujo atraso de replicação esteja dentro de dois minutos do primário */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, ['maxStalenessSeconds' => 120]));
/* Habilita explicitamente leituras protegidas pelo servidor */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, ['hedge' => ['enabled' => true]]));
?>
O exemplo acima produzirá:
object(MongoDB\Driver\ReadPreference)#1 (1) { ["mode"]=> string(18) "secondaryPreferred" } object(MongoDB\Driver\ReadPreference)#1 (2) { ["mode"]=> string(7) "nearest" ["tags"]=> array(1) { [0]=> object(stdClass)#2 (1) { ["dc"]=> string(2) "ny" } } } object(MongoDB\Driver\ReadPreference)#1 (2) { ["mode"]=> string(9) "secondary" ["maxStalenessSeconds"]=> int(120) } object(MongoDB\Driver\ReadPreference)#1 (2) { ["mode"]=> string(9) "secondary" ["hedge"]=> object(stdClass)#1 (1) { ["enabled"]=> bool(true) } }