(mongodb >=1.0.0)
MongoDB\Driver\ReadPreference::__construct — Créer un nouveau ReadPreference
$mode
, ?array $tagSets
= null
, ?array $options
= null
)Construit un nouveau MongoDB\Driver\ReadPreference, qui est un objet de valeur immuable.
mode
Valeur | Description |
---|---|
MongoDB\Driver\ReadPreference::RP_PRIMARY ou "primary" |
Toutes les opérations lues à partir du jeu de réplicas actuel primaire. Il s'agit de la préférence de lecture par défaut pour MongoDB. |
MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED ou "primaryPreferred" |
Dans la plupart des situations, les opérations sont lues à partir du primaire, mais si il n'est pas disponible, les opérations sont lues à partir d'un membre secondaire. |
MongoDB\Driver\ReadPreference::RP_SECONDARY ou "secondary" |
Toutes les opérations sont lues à partir des membres secondaires du jeu de réplicas. |
MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED ou "secondaryPreferred" |
Dans la plupart des cas, les opérations sont lues par des membres secondaires, mais si aucun membre secondaire n'est disponible, les opérations sont lues à partir du primaire. |
MongoDB\Driver\ReadPreference::RP_NEAREST ou "nearest" |
Opérations lues à partir du membre du jeu de réplicas ayant la latence réseau la moins élevée, quel que soit le type du membre. |
tagSets
Les jeux de tag vous permettent de cibler des opérations de lecture sur des
membres spécifiques d'un jeu de réplicas. Ce paramètre doit être un tableau de
tableaux associatifs, qui contiennent chacun zéro ou plusieurs paires
clé/valeur. Lors de la sélection d'un serveur pour une opération de lecture,
le pilote tente de sélectionner un nœud comportant toutes les balises d'un
ensemble (c'est-à-dire le tableau associatif de paires clé/valeur). Si la
sélection échoue, le pilote essaiera les jeux suivants. Un jeu de balises vide
(array()
) correspond à n'importe quel nœud et peut être
utilisé comme secours.
Les tags ne sont pas compatibles avec le mode
MongoDB\Driver\ReadPreference::RP_PRIMARY
et, en général,
s'appliquent uniquement lors de la sélection d'un membre secondaire d'un jeu
pour une opération de lecture. Toutefois, le mode
MongoDB\Driver\ReadPreference::RP_NEAREST
, lorsqu'il est
combiné avec un jeu de balises, sélectionne le membre correspondant avec la
latence réseau la plus basse. Ce membre peut être primaire ou secondaire.
options
Option | Type | Description |
---|---|---|
hedge | object|array |
Spécifie si l'on doit utiliser ou non » les lectures croisées, qui sont supportés depuis MongoDB 4.4+ pour les requêtes partagées.
Le serveur des lectures croisées est disponible pour toutes les
lectures des références non primaires, et est activé par défaut
lors de l'utilisation du mode |
maxStalenessSeconds | entier |
Spécifie un décalage de réplication maximal, ou "obsolescence", pour les lectures des secondaires. Lorsque l'obsolescence estimée d'un secondaire dépasse cette valeur, le pilote cesse de l'utiliser pour les opérations de lecture.
Si elle est spécifiée, l'obsolescence maximale doit être un entier signé
32 bits supérieur ou égal à
Par défaut,
Cette option n'est pas compatible avec le mode
|
mode
est incorrect.tagSets
est fourni pour une préférence de lecture primaire ou est incorrect (c.-à-d. pas un tableau de zéro ou plus de documents)."maxStalenessSeconds"
est fournie pour une préférence de lecture primaire ou est hors de la plage.
Version | Description |
---|---|
PECL mongodb 1.8.0 |
Ajout de l'option "hedge" .
|
PECL mongodb 1.3.0 |
L'argument |
PECL mongodb 1.2.0 |
Ajout d'un troisième argument d' |
Exemple #1 Exemple avec MongoDB\Driver\ReadPreference::__construct()
<?php
/* Préférez un nœud secondaire mais retombez sur un primaire. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));
/* Préférez un nœud dans le centre de données de New York avec la latence la plus basse. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST, [['dc' => 'ny']]));
/* Nécessite un nœud secondaire dont le décalage de réplication se trouve dans les deux minutes */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessSeconds' => 120]));
/* Active explicitement le servuer des lectures croisées */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['hedge' => ['enabled' => true]]));
?>
Résultat de l'exemple ci-dessus est similaire à :
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) } }