MongoDB\Driver\ReadPreference::__construct

(mongodb >=1.0.0)

MongoDB\Driver\ReadPreference::__construct — CrĂ©er un nouveau ReadPreference

Description

final public function MongoDB\Driver\ReadPreference::__construct(string $mode, ?array $tagSets = null, ?array $options = null)

Construit un nouveau MongoDB\Driver\ReadPreference, qui est un objet de valeur immuable.

Liste de paramĂštres

mode

Mode de préférence de lecture
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.
tagSets
Les jeux de tag 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 "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

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.

Erreurs / Exceptions

Historique

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" .

Exemples

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)
  }
}
add a note

User Contributed Notes

There are no user contributed notes for this page.