(mongodb >=1.0.0)
MongoDB\Driver\Manager::__construct — Создаёт нового MongoDB-менеджера
$uri
= null
, ?array $uriOptions
= null
, ?array $driverOptions
= null
)Метод создаёт новый объект MongoDB\Driver\Manager с заданными параметрами.
Замечание: В » спецификации по обнаружению и мониторингу сервера, этот конструктор не выполняет ввода-вывода. Соединения будут инициализироваться по требованию, когда выполняется первая операция.
Замечание: При передаче любых URI-опций, которые связаны с SSL или TLS, через строку подключения или параметр
uriOptions
, модуль неявно включает TLS при соединениях. Чтобы предотвратить это, либо явно отключают опциюtls
, либо не передают никаких TLS-опций.
Замечание: На платформах Unix модуль чувствителен к сценариям, которые используют системный вызов fork() без последующего вызова exec(). Пользователям не рекомендуется переиспользовать экземпляр класса MongoDB\Driver\Manager в дочернем процессе. child process.
uri
URI-адрес подключения » mongodb://:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[defaultAuthDb][?options]]
Параметр примет значение по умолчанию "mongodb://127.0.0.1:27017"
, если аргумент не передали.
Подробнее о поддерживаемых URI-параметрах рассказывает раздел » Параметры строки подключения в руководстве MongoDB. » Параметры пула подключения не поддерживаются, поскольку модуль не реализует пулы подключений.
uri
— это URL, поэтому любые специальные символы в
его компонентах должны закодированы в соответствии
» RFC 3986. Это особенно
актуально для имени пользователя и пароля, которые часто могут содержать специальные
символы, такие как @
, :
, или
%
. При подключении через доменный сокет Unix, путь
сокета может содержать специальные символы, например слеши, которые необходимо закодировать.
Функция rawurlencode() может использоваться для кодирования
составных частей URI-адреса.
Компонент defaultAuthDb
может использоваться для указания
имени базы данных, связанной с учётными данными пользователя; однако
параметр URI authSource
будет иметь приоритет, если он указан.
Если ни defaultAuthDb
, ни
authSource
не указаны, база данных admin
будет использоваться по умолчанию. Компонент
defaultAuthDb
не имеет смысла при отсутствии учётных данных пользователя.
uriOptions
Дополнительные
» параметры строки подключения,
которые будут перезаписывать любые параметры с тем же именем в параметре
uri
.
Название опции | Тип | Описание |
---|---|---|
appname | string |
В MongoDB 3.4+ появилась возможность добавлять аннотации к соединениям с метаданными, предоставляемыми подключающимся клиентом. Эти метаданные включаются в журналы логирования сервера при установлении соединения, а также записываются в журналы медленных запросов, если включено профилирование базы данных. Эта опция может использоваться для указания имени приложения, которое будет включено в метаданные. Значение не может превышать 128 символов. |
authMechanism | string |
Механизм аутентификации, который MongoDB будет использовать для аутентификации соединения. Для просмотра дополнительных сведений и списка поддерживаемых значений, смотрите раздел » Параметры аутентификации в руководстве MongoDB. |
authMechanismProperties | array |
Свойства для выбранного механизма аутентификации. Для просмотра дополнительных сведений и списка поддерживаемых значений, смотрите раздел » Спецификация аутентификации драйвера.
|
authSource | string |
Имя базы данных, связанное с учётными данными пользователя. По умолчанию
используется компонент базы данных из URI-адреса соединения или база данных
Для механизмов аутентификации, которые делегируют хранение учётных данных
другим службам (например, GSSAPI), значение должно быть
|
compressors | string |
Приоритетный список разделённых запятыми компрессоров, которые требуется использовать клиенту. Сообщения сжаты, только если клиент и сервер совместно используют любые компрессоры, а компрессор, используемый в каждом направлении, будет зависеть от индивидуальной конфигурации сервера или драйвера. Дополнительную информацию даёт страница » Спецификация компрессии драйвера. |
connectTimeoutMS | int |
Время ожидания в миллисекундах при попытке соединения. Значение по умолчанию равно 10 000 миллисекунд. |
directConnection | bool |
Параметр управляет поведением при обнаружении набора реплик,
если в строке подключения указали только один хост. По умолчанию
предоставление одного члена в строке подключения
устанавливается прямое подключение или обнаруживается дополнительное количество членов
в зависимости от того, указали ли
URI-параметр |
heartbeatFrequencyMS | int |
Задаёт интервал в миллисекундах между проверками драйвера топологии MongoDB, которые отсчитываются с конца предыдущей проверки до начала следующей. Значение по умолчанию равно 60 000 миллисекунд. Согласно » Спецификации по обнаружению и мониторингу сервера, нельзя указывать значение меньше 500 миллисекунд. |
journal | bool |
Соответствует параметру гарантий записи |
loadBalanced | bool |
Указывает, подключается ли драйвер к кластеру MongoDB через балансировщик нагрузки.
Если |
localThresholdMS | int |
Размер в миллисекундах окна задержки для выбора среди нескольких подходящих экземпляров MongoDB при разрешении предпочтения чтения. По умолчанию — 15 миллисекунд. |
maxStalenessSeconds | int |
Соответствует параметру предпочтения чтения
Если указана, максимальное отставание должно быть 32-битным целым числом,
большим или равным
|
password | string | Пароль для аутентификации пользователя. Эта опция полезна, если пароль содержит специальные символы, которые в противном случае должны были закодированы для URI-адреса подключения. |
readConcernLevel | string |
Соответствует параметру гарантий чтения level
Определяет уровень изоляции чтения. Подробнее смотрите
MongoDB\Driver\ReadConcern.
|
readPreference | string |
Соответствует параметру предпочтениям чтения |
readPreferenceTags | array |
Соответствует параметру предпочтениям чтения
|
replicaSet | string |
Задаёт имя набора реплики. |
retryReads | bool |
Указывает, должен ли драйвер автоматически повторять
определённые операции чтения, которые не выполняются из-за временных сетевых ошибок
или выборов набора реплик. Требуется MongoDB 3.6+.
По умолчанию Смотрите » Спецификацию по Retryable Reads для получения дополнительной информации. |
retryWrites | bool |
Указывает, должен ли драйвер автоматически повторять
определённые операции записи, которые не выполняются из-за временных сетевых ошибок
или выборов набора реплик. Требуется MongoDB 3.6+.
По умолчанию Смотрите » Retryable Writes в руководстве MongoDB для получения дополнительной информации. |
serverSelectionTimeoutMS | int |
Указывает как долго в миллисекунд блокировать выбор сервера перед выбросом исключения. По умолчанию — 30 000 миллисекунд. |
serverSelectionTryOnce | bool |
Со значением |
socketCheckIntervalMS | int |
Если сокет не использовался в последнее время, драйвер должен проверить
с помощью команды |
socketTimeoutMS | int |
Время в миллисекундах, чтобы попытаться отправить или получить в сокет до истечения времени. По умолчанию — 300 000 миллисекунд (т. е. 5 минут). |
srvMaxHosts | int |
Максимальное количество результатов SRV для случайного выбора
при первоначальном заполнении посевного списка или, во время опроса SRV,
при добавлении новых узлов к топологии.
По умолчанию |
srvServiceName | string |
Имя службы, используемое для поиска SRV в начальном списке DNS seedlist
обнаружения и опроса SRV. По умолчанию |
tls | bool |
Со значением |
tlsAllowInvalidCertificates | bool |
Указывает драйверу, выдавать ли ошибку,
если TLS-сертификат сервера недействителен. Значение по умолчанию
равно Внимание
Отключение проверки сертификата создаёт уязвимость. |
tlsAllowInvalidHostnames | bool |
Указывает, должен ли драйвер выдавать ошибку
при несоответствии имени хоста сервера и имени хоста, указанного
в сертификате TLS. По умолчанию Внимание
Отключение проверки сертификата создаёт уязвимость. Разрешение недопустимых имён хоста может привести к атаке типа » "человек посередине" (man-in-the-middle). |
tlsCAFile | string |
Путь к файлу с одним или несколькими центрами сертификации, которые следует считать доверенными при установлении соединения TLS. По умолчанию будет использоваться хранилище системных сертификатов. |
tlsCertificateKeyFile | string |
Путь к файлу сертификата клиента или файлу закрытого ключа клиента; в случае, если они оба необходимы, файлы должны быть объединены. |
tlsCertificateKeyFilePassword | string |
Пароль для расшифровки закрытого ключа клиента (т. е.
параметра URI |
tlsDisableCertificateRevocationCheck | bool |
Если |
tlsDisableOCSPEndpointCheck | bool |
Если |
tlsInsecure | bool |
Ослабьте ограничения TLS в максимально возможной степени.
При значении Внимание
Отключение проверки сертификата создаёт уязвимость. Разрешение недопустимых имён хоста может привести к атаке типа » "человек посередине" (man-in-the-middle). |
username | string | Имя пользователя для аутентификации. Эта опция полезна, если имя пользователя содержит специальные символы, которые в противном случае должны были быть закодированы в URL для URI-адреса подключения. |
w | int|string |
Соответствует параметру гарантий записи |
wTimeoutMS | int|string |
Соответствует параметру гарантий записи
Если указан, |
zlibCompressionLevel | int |
Указывает уровень сжатия для использования zlib. Эта
опция ничего не делает, если |
driverOptions
Опция | Тип | Описание | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
autoEncryption | array |
Предоставляет опции для включения автоматического шифрования на уровне поля на стороне клиента.
Поддерживаются следующие опции:
|
||||||||||||||||||||||||||||||
ca_dir | string |
Путь к корректно захешированному каталогу сертификатов. По умолчанию будет использоваться хранилище системных сертификатов. |
||||||||||||||||||||||||||||||
crl_file | string | Путь к файлу списка аннулированных сертификатов. | ||||||||||||||||||||||||||||||
disableClientPersistence | bool |
Со значением
|
||||||||||||||||||||||||||||||
driver | array |
Позволяет библиотеке более высокого уровня добавлять свои метаданные
к рукопожатию сервера. По умолчанию модуль отправляет своё имя,
версию и платформу (то есть PHP-версию) при рукопожатии. Для ключей
|
||||||||||||||||||||||||||||||
serverApi | MongoDB\Driver\ServerApi |
Опция обновляет версию API-интерфейса сервера для менеджера. Без опции API-версия не объявляется. |
uri
выбрасывает исключение MongoDB\Driver\Exception\RuntimeException.
Версия | Описание |
---|---|
PECL-модуль mongodb 2.0.0 |
Удалили URI-параметр
Удалили URI-параметр
Удалили URI-параметр
Удалили URI-параметр
Удалили драйверный параметр
Удалили драйверный параметр
Удалили драйверный параметр
Удалили драйверный параметр
Удалили драйверный параметр
Удалили драйверный параметр |
PECL-модуль mongodb 1.16.0 |
Провайдер AWS KMS для шифрования на стороне клиента теперь принимает параметр
Добавили
Драйвер попытается сконфигурировать провайдера, заполнив
» Автоматические учётные данные,
если для KMS-провайдеров |
PECL-модуль mongodb 1.15.0 |
Драйвер попытается сконфигурировать провайдера, заполнив
» Автоматические учётные данные,
если для KMS-провайдера |
PECL-модуль mongodb 1.14.0 |
Добавили опции автоматического шифрования |
PECL-модуль mongodb 1.13.0 |
Добавили URI-параметры |
PECL-модуль mongodb 1.12.0 |
KMIP теперь поддерживается как KMS-провайдер для шифрования на стороне клиента
и настраивается через поле |
PECL-модуль mongodb 1.11.0 |
Добавили URI-параметр |
PECL-модуль mongodb 1.10.0 |
Добавили драйверный параметр
Azure и GCP теперь поддерживаются как поставщик KMS
для шифрования на стороне клиента и могут быть настроены в поле |
PECL-модуль mongodb 1.8.0 |
Добавили URI-параметры
Добавили драйверный параметр |
PECL-модуль mongodb 1.7.0 |
Добавили драйверный параметр
Указание любой опции SSL или TLS
в параметре |
PECL-модуль mongodb 1.6.0 |
Добавили URI-параметры
Значение URI-параметра
Передача URI-опции SSL или TLS через строку подключения или параметр
|
PECL-модуль mongodb 1.5.0 |
Параметр |
PECL-модуль mongodb 1.4.0 |
Добавили URI-параметры |
PECL-модуль mongodb 1.3.0 |
В аргументе |
PECL-модуль mongodb 1.2.0 |
Аргумент
Добавили URI-параметр
Добавили драйверные параметры
API-интерфейс PHP-потоков больше не задействуется для соединения с сокетом. Значение URI-параметра
|
PECL-модуль mongodb 1.1.0 |
Аргумент |
Пример #1 Примеры работы метода MongoDB\Driver\Manager::__construct()
Подключение к автономному узлу MongoDB:
<?php
$manager = new MongoDB\Driver\Manager("mongodb://example.com:27017");
?>
Подключение к автономному узлу СУБД MongoDB через доменный сокет Unix. Путь сокета допускает специальные символы наподобие слешей, которые требуется закодировать функцией rawurlencode().
<?php
$manager = new MongoDB\Driver\Manager("mongodb://" . rawurlencode("/tmp/mongodb-27017.sock"));
?>
Подключение к набору реплик:
<?php
$manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");
?>
Подключение к сегментированному кластеру (т. е. одну или нескольким экземплярам mongos):
<?php
$manager = new MongoDB\Driver\Manager("mongodb://mongos1.example.com,mongos2.example.com/");
?>
Подключение к MongoDB с учётными данными аутентификации для конкретного пользователя и базы данных:
<?php
$manager = new MongoDB\Driver\Manager("mongodb://myusername:mypassword@example.com/?authSource=databaseName");
?>
Подключение к MongoDB с учётными данными аутентификации для конкретного пользователя и базы данных,
где имя пользователя или пароль содержат специальные
символы (например, @
, :
,
%
). В следующем примере, строка с паролем
myp@ss:w%rd
была вручную экранирована; однако
rawurlencode() может использоваться для экранирования URI-компонентов,
которые могут содержать специальные символы.
<?php
$manager = new MongoDB\Driver\Manager("mongodb://myusername:mypassword@example.com/?authSource=databaseName");
?>
Подключение к MongoDB с аутентификацией X509:
<?php
$manager = new MongoDB\Driver\Manager(
"mongodb://example.com/?ssl=true&authMechanism=MONGODB-X509",
[],
[
"pem_file" => "/path/to/client.pem",
]
);
?>