MongoDB\Driver\ReadPreference::__construct

(mongodb >=1.0.0)

MongoDB\Driver\ReadPreference::__constructСоздать новый ReadPreference

Описание

final public MongoDB\Driver\ReadPreference::__construct ( string|integer $mode [, array $tagSets = NULL [, array $options = array() ]] )

Создает новый MongoDB\Driver\ReadPreference, который является неизменяемым объектом значения.

Список параметров

mode

Режим предпочтения чтения
Значение Описание
MongoDB\Driver\ReadPreference::RP_PRIMARY or "primary"

Все операции считывается из текущего первичного узла набора реплик. Это предпочтение чтения по умолчанию для MongoDB.

MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED or "primaryPreferred"

В большинстве ситуаций операции считываются из первичного узла, но если он недоступен, операции считываются из вторичных узлов.

MongoDB\Driver\ReadPreference::RP_SECONDARY или "secondary"

Все операции считываются из вторичных узлов набора реплик.

MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED или "secondaryPreferred"

В большинстве ситуаций операции считываются из вторичных членов, но если вторичные члены недоступны, операции считываются из первичного узла.

MongoDB\Driver\ReadPreference::RP_NEAREST or "nearest"

Операции считываются из члена набора репилк с наименьшей задержкой сети, независимо от типа члена.

tagSets

Наборы тегов позволяют настраивать операции чтения для определенных членов набора реплик. Этот параметр должен быть массивом ассоциативных массивов, каждый из которых содержит ноль или несколько пар ключ-значение. При выборе сервера для операции чтения драйвер пытается выбрать узел, имеющий все теги в наборе (т.е. ассоциативный массив пар ключ-значение). Если выбор не удался, the driver will attempt subsequent sets. Пустой набор тегов (array()) будет соответствовать любому узлу и может использоваться как резервный.

Теги не совместимы с режимом MongoDB\Driver\ReadPreference::RP_PRIMARY, и, как правило, применяется только при выборе вторичного члена набора для операции чтения. Однако режим MongoDB\Driver\ReadPreference::RP_NEAREST в сочетании с набором тегов, выбирает соответствующий член с наименьшей задержкой сети. Этот член может быть первичным или вторичным.

options

options
Опция Тип Описание
maxStalenessSeconds integer

Определяет максимальное отставание репликации или "staleness", для чтения из вторичных узлов. Когда оцениваемая staleness вторичных узлов превышает это значение, драйвер прекращает использовать ее для операций чтения.

Если указано, максимальный staleness должен быть 32-битным числом без знака, большим или равным MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS.

По умолчанию используется MongoDB\Driver\ReadPreference::NO_MAX_STALENESS, что означает, что драйвер не будет учитывать отставания вторичных узлов при выборе направления для операции чтения.

Этот параметр несовместим с режимом MongoDB\Driver\ReadPreference::RP_PRIMARY. Указание максимальной staleness также требует, чтобы все экземпляры MongoDB в развертывании использовали MongoDB 3.4+. Исключение будет выброшено во время выполнения, если экземпляры MongoDB в развертывании имеют более старую версию.

Ошибки

Список изменений

Версия Описание
1.3.0

Аргумент mode теперь принимает строковое значение, которое соответствует URI-опции "readPreference" для MongoDB\Driver\Manager::__construct().

1.2.0

Добавлен третий аргумент options, который поддерживает параметр "maxStalenessSeconds".

Примеры

Пример #1 Пример выполнения MongoDB\Driver\ReadPreference::__construct()

<?php

/* Prefer a secondary node but fall back to a primary. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));

/* Prefer a node in the New York data center with lowest latency. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST, [['dc' => 'ny']]));

/* Require a secondary node whose replication lag is within two minutes of the primary */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARYnull, ['maxStalenessSeconds' => 120]));

?>

Результат выполнения данного примера:

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)
}

Смотрите также