# Класс MongoDB\Driver\ReadPreference

(mongodb >=1.0.0)

## Введение

## Обзор класса

final class MongoDB\Driver\ReadPreference implements MongoDB\BSON\Serializable, Serializable {
/* Свойства */
public readonly string $mode;
public readonly ?array $tags;
public readonly int $maxStalenessSeconds;
public readonly ?object $hedge;
/* Константы */
const string PRIMARY = primary;
const string PRIMARY_PREFERRED = primaryPreferred;
const string SECONDARY = secondary;
const string SECONDARY_PREFERRED = secondaryPreferred;
const string NEAREST = nearest;
const int NO_MAX_STALENESS = -1;
const int SMALLEST_MAX_STALENESS_SECONDS = 90;
/* Методы */
final public function bsonSerialize(): stdClass
final public function __construct(string `$mode`, ?array `$tagSets` = `null`, ?array `$options` = `null`)
final public function getHedge(): ?object
final public function getMaxStalenessSeconds(): int
final public function getMode(): int
final public function getModeString(): string
final public function getTagSets(): array
}

## Свойства

mode
  Режим read preference в виде строки (например, `"primary"`, `"secondary"`).
tags
  Список наборов тегов, который использует read preference, или `null`, если наборы тегов не указаны.
maxStalenessSeconds
  Максимальное отставание (staleness) в секундах для операций чтения или `MongoDB\Driver\ReadPreference::NO_MAX_STALENESS`, если максимальное отставание не указано.
hedge
  Документ, который задаёт параметры hedge для read preference, или `null`, если параметры hedge не указаны.
  Внимание

  Свойство устарело, поскольку hedged reads устарели в MongoDB 8.0.

## Предопределённые константы

`MongoDB\Driver\ReadPreference::PRIMARY`

  Каждую операцию чтения из текущей реплики установили первичными. Это предпочтение чтения по умолчанию для СУБД MongoDB.

`MongoDB\Driver\ReadPreference::PRIMARY_PREFERRED`

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

`MongoDB\Driver\ReadPreference::SECONDARY`

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

`MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED`

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

`MongoDB\Driver\ReadPreference::NEAREST`

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

`MongoDB\Driver\ReadPreference::NO_MAX_STALENESS`

  Значение по умолчанию для параметра `"maxStalenessSeconds"` чтобы указать на ограничение на максимальное запаздывание (staleness), что означает, что драйвер не будет учитывать задержку вторичных узлов при выборе направления для операции чтения.

`MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS`

  Минимальное значение для параметра `"maxStalenessSeconds"` равно 90 секундам. Драйвер оценивает запаздывание (staleness) вторичных узлов, периодически проверяя последнюю дату записи каждого члена набора реплик. Поскольку эти проверки нечастые, оценка запаздывания грубая. Поэтому драйвер не обеспечивает максимальную величину запаздывания меньше 90 секунд.

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

Версия | Описание
--- | ---
PECL-модуль mongodb 2.3.0 | Добавлены свойства public readonly.
PECL-модуль mongodb 2.0.0 | Удалили константы `MongoDB\Driver\ReadPreference::RP_PRIMARY`, `MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED`, `MongoDB\Driver\ReadPreference::RP_SECONDARY`, `MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED` и `MongoDB\Driver\ReadPreference::RP_NEAREST`. Метод getMode() тоже удалили.
PECL-модуль mongodb 1.20.0 | Константы `MongoDB\Driver\ReadPreference::RP_PRIMARY`, `MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED`, `MongoDB\Driver\ReadPreference::RP_SECONDARY`, `MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED` и `MongoDB\Driver\ReadPreference::RP_NEAREST` устарели.
PECL-модуль mongodb 1.7.0 | Добавили константы `MongoDB\Driver\ReadPreference::PRIMARY`, `MongoDB\Driver\ReadPreference::PRIMARY_PREFERRED`, `MongoDB\Driver\ReadPreference::SECONDARY`, `MongoDB\Driver\ReadPreference::SECONDARY_PREFERRED` и `MongoDB\Driver\ReadPreference::NEAREST`. Класс теперь реализует интерфейс Serializable.
PECL-модуль mongodb 1.2.0 | Добавили константы `MongoDB\Driver\ReadPreference::NO_MAX_STALENESS` и `MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS`. Класс теперь реализует интерфейс MongoDB\BSON\Serializable.

## Содержание

- MongoDB\Driver\ReadPreference::bsonSerialize — Возвращает объект для BSON-сериализации
- MongoDB\Driver\ReadPreference::__construct — Создаёт новый объект предпочтения чтения ReadPreference
- MongoDB\Driver\ReadPreference::getHedge — Возвращает опцию "hedge" объекта ReadPreference
- MongoDB\Driver\ReadPreference::getMaxStalenessSeconds — Возвращает опцию "maxStalenessSeconds" объекта ReadPreference
- MongoDB\Driver\ReadPreference::getMode — Возвращает опцию "mode" объекта ReadPreference
- MongoDB\Driver\ReadPreference::getModeString — Возвращает опцию "mode" объекта ReadPreference в виде строки
- MongoDB\Driver\ReadPreference::getTagSets — Возвращает опцию "tagSets" объекта ReadPreference

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open