(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 |
|---|---|
"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. |
"primaryPreferred" |
Dans la plupart des situations, les opérations sont lues à partir du primaire, mais s'il n'est pas disponible, les opérations sont lues à partir d'un membre secondaire. |
"secondary" |
Toutes les opérations sont lues à partir des membres secondaires du jeu de réplicas. |
"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. |
"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. |
tagSetsarray()) correspond Ă n'importe quel nĆud et peut ĂȘtre
utilisé comme secours.
Les tags ne sont pas compatibles avec le mode
"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
"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
couvertes, qui sont supportées depuis MongoDB 4.4+ pour les
requĂȘtes partagĂ©es.
Les lectures couvertes cÎté serveur sont disponibles pour toutes les
préférences de lecture non primaires, et sont activées par défaut
lors de l'utilisation du mode "nearest". Cette option
permet d'activer explicitement les lectures couvertes cÎté serveur
pour les préférences de lecture non primaires en spécifiant
['enabled' => true], ou de désactiver explicitement
les lectures couvertes cÎté serveur pour la préférence de lecture
"nearest" en spécifiant
['enabled' => false].
|
| 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 Ă
MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS.
Par défaut,
MongoDB\Driver\ReadPreference::NO_MAX_STALENESS,
ce qui signifie que le pilote ne prendra pas en compte le décalage d'un
secondaire lors du choix de l'endroit oĂč diriger une opĂ©ration de
lecture.
Cette option n'est pas compatible avec le mode
"primary".
La spécification d'une obsolescence maximale requiert également que
toutes les instances MongoDB du déploiement utilisent MongoDB 3.4+. Une
exception sera levée au moment de l'exécution si toutes les instances de
MongoDB dans le déploiement sont d'une version de serveur plus ancienne.
|
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 2.0.0 |
Passer un int pour l'argument mode
n'est plus pris en charge.
|
| PECL mongodb 1.20.0 |
Passer un int pour l'argument mode
est DĂPRĂCIĂ.
|
| PECL mongodb 1.8.0 |
Ajout de l'option "hedge".
|
| PECL mongodb 1.3.0 |
L'argument mode accepte maintenant une valeur de
chaĂźne, ce qui est compatible avec l'option URI
"readPreference" pour
MongoDB\Driver\Manager::__construct()
|
| PECL mongodb 1.2.0 |
Ajout d'un troisiĂšme argument d'options, qui prend
en charge l'option "maxStalenessSeconds" .
|
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::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::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::SECONDARY, null, ['maxStalenessSeconds' => 120]));
/* Active explicitement le serveur des lectures croisées */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::SECONDARY, null, ['hedge' => ['enabled' => true]]));
?>L'exemple ci-dessus va afficher :
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)
}
}