(mongodb >=1.0.0)
MongoDB\Driver\ReadPreference::__construct — Создать новый ReadPreference
$mode
, ?array $tagSets
= null
, ?array $options
= null
)Создаёт новый 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
Опция | Тип | Описание |
---|---|---|
hedge | object|array |
Указывает, использовать ли » хеджированные чтения, которые поддерживаются MongoDB 4.4+ для закрытых запросов.
Хеджированные чтения с сервера доступны для всех неосновных предпочтений чтения
и включаются по умолчанию при использовании режима |
maxStalenessSeconds | int |
Определяет максимальное отставание репликации или "staleness", для чтения из вторичных узлов. Когда оцениваемая staleness вторичных узлов превышает это значение, драйвер прекращает использовать её для операций чтения.
Если указано, максимальный staleness должен быть 32-битным числом без знака,
большим или равным
По умолчанию используется
Этот параметр несовместим с режимом
|
mode
выбрасывает MongoDB\Driver\Exception\InvalidArgumentExceptiontagSets
предоставляется как первичное предпочтение чтения или имеет неправильный формат (т.е. не массив из нуля или более документов) выбрасывает MongoDB\Driver\Exception\InvalidArgumentException."maxStalenessSeconds"
предоставляется для первичного предпочтения чтения или находится вне диапазона, выбрасывает MongoDB\Driver\Exception\InvalidArgumentException.
Версия | Описание |
---|---|
PECL mongodb 1.8.0 |
Добавлен параметр "hedge" .
|
PECL mongodb 1.3.0 |
Аргумент |
PECL mongodb 1.2.0 |
Добавлен третий аргумент |
Пример #1 Пример использования MongoDB\Driver\ReadPreference::__construct()
<?php
/* Предпочитать вторичный узел, но в случае отказа отступить к первичному. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));
/* Предпочитать узел в Нью-Йоркском центре обработки данных с минимальной задержкой. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST, [['dc' => 'ny']]));
/* Требуется дополнительный узел, чья задержка репликации находится в пределах двух минут от основного */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessSeconds' => 120]));
/* Явно включить хеджирование чтения на сервере */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['hedge' => ['enabled' => true]]));
?>
Результат выполнения приведённого примера:
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) } }