(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 "nearest".
Esta opção permite ativar explicitamente leituras protegidas pelo servidor para
preferências de leitura não primárias, especificando
['enabled' => true] ou desabilitando explicitamente
leituras protegidas pelo servidor para a preferência de leitura "nearest"
especificando ['enabled' => false].
|
| 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
MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS.
O padrão é
MongoDB\Driver\ReadPreference::NO_MAX_STALENESS,
o que significa que o driver não considerará o atraso de um secundário
ao escolher para onde direcionar uma operação de leitura.
Esta opção não é compatível com o modo "primary".
A especificação de uma inatividade máxima também exige que todas as instâncias
do MongoDB na implantação usem o MongoDB 3.4+. Uma exceção será
lançada no momento da execução se alguma instância do MongoDB na implantação
for de uma versão de servidor mais antiga.
|
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 2.0.0 |
PAssar um int para o argumento mode
não é mais suportado.
|
| PECL mongodb 1.20.0 |
Passar um int no parâmetro mode
foi DESCONTINUADO.
|
| PECL mongodb 1.8.0 |
Adcionada a opção "hedge".
|
| PECL mongodb 1.3.0 |
O parâmetro mode agora aceita um valor de string,
que é consistente com a opção URI "readPreference"
para MongoDB\Driver\Manager::__construct().
|
| PECL mongodb 1.2.0 |
Adicionado um terceiro parâmetro options, que suporta
a opção "maxStalenessSeconds".
|
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)
}
}