(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.
uriURI-адрес подключения » 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",
]
);
?>