(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), значение должно быть
|
canonicalizeHostname | bool |
Если
Этот параметр является устаревшим псевдонимом для свойства
|
compressors | string |
Имеющий приоритет, список разделённых запятыми компрессоров, которые клиент хочет использовать. Сообщения сжаты только в том случае, если клиент и сервер совместно используют любые компрессоры, а компрессор, используемый в каждом направлении, будет зависеть от индивидуальной конфигурации сервера или драйвера. Смотрите » Спецификация компрессии драйвера для получения дополнительной информации. |
connectTimeoutMS | int |
Время ожидания в миллисекундах при попытке соединения. По умолчанию — 10 000 миллисекунд. |
directConnection | bool |
Этот параметр можно использовать для управления поведением обнаружения набора реплик,
если в строке подключения указан только один хост. По умолчанию,
предоставление одного члена в строке подключения приведёт к
установлению прямого подключения или обнаружению дополнительных членов
в зависимости от того, отсутствует или отсутствует опция
URI |
gssapiServiceName | string |
Устанавливает имя службы Kerberos при подключении к керберизованными
экземплярам MongoDB. Это значение должно совпадать именем службы,
установленным в экземплярах MongoDB (т. е. с параметром сервер,
» saslServiceName
). По умолчанию используется
Этот параметр является устаревшим псевдонимом для свойства
|
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 для получения дополнительной информации. |
safe | bool |
Если Эта опция устарела и не должна использоваться. |
serverSelectionTimeoutMS | int |
Указывает как долго в миллисекунд блокировать выбор сервера перед выбросом исключения. По умолчанию — 30 000 миллисекунд. |
serverSelectionTryOnce | bool |
Если |
socketCheckIntervalMS | int |
Если сокет не использовался в последнее время, драйвер должен проверить
с помощью команды |
socketTimeoutMS | int |
Время в миллисекундах, чтобы попытаться отправить или получить в сокет до истечения времени. По умолчанию — 300 000 миллисекунд (т. е. 5 минут). |
srvMaxHosts | int |
Максимальное количество результатов SRV для случайного выбора
при первоначальном заполнении посевного списка или, во время опроса SRV,
при добавлении новых узлов к топологии.
По умолчанию |
srvServiceName | string |
Имя службы, используемое для поиска SRV в начальном списке DNS seedlist
обнаружения и опроса SRV. По умолчанию |
ssl | bool |
Создаёт соединение с TLS/SSL, если
Параметр является устаревшим псевдонимом для параметра
URI |
tls | bool |
Инициирует соединение с TLS/SSL, если |
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
Опция | Тип | Описание | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
allow_invalid_hostname | bool |
Отключает проверку имени хоста, если Разрешение недопустимых имён хоста может привести к атаке типа » "человек посередине" (man-in-the-middle).
Этот параметр является устаревшим псевдонимом
для параметра URI
|
||||||||||||||||||||||||||||||
autoEncryption | array |
Предоставляет опции для включения автоматического шифрования на уровне поля на стороне клиента.
Поддерживаются следующие опции:
|
||||||||||||||||||||||||||||||
ca_dir | string |
Путь к корректно захешированному каталогу сертификатов. По умолчанию будет использоваться хранилище системных сертификатов. |
||||||||||||||||||||||||||||||
ca_file | string |
Путь к файлу с одним или несколькими центрами сертификации, которые следует считать доверенными при установлении соединения TLS. По умолчанию будет использоваться хранилище системных сертификатов.
Параметр является устаревшим псевдонимом
для параметра URI |
||||||||||||||||||||||||||||||
context | resource |
Параметры SSL-контекста, которые будут использоваться как запасной вариант, если опцию драйвера или эквивалентную ей URI-опцию, если имеется, не указали. Обратите внимание, что модуль не обращается к контексту потока по умолчанию (т. е. к функции stream_context_get_default()). Поддерживаются следующие параметры контекста:
Параметр поддерживается для обратной совместимости, но его следует считать устаревшим. |
||||||||||||||||||||||||||||||
crl_file | string | Путь к файлу списка аннулированных сертификатов. | ||||||||||||||||||||||||||||||
disableClientPersistence | bool |
Если значение равно
|
||||||||||||||||||||||||||||||
driver | array |
Позволяет библиотеке более высокого уровня добавлять свои метаданные
к рукопожатию сервера. По умолчанию модуль отправляет своё имя,
версию и платформу (то есть PHP-версию) при рукопожатии. Для ключей
|
||||||||||||||||||||||||||||||
pem_file | string |
Путь к сертификату в формате PEM для аутентификации клиента.
Этот параметр является устаревшим псевдонимом
для параметра URI |
||||||||||||||||||||||||||||||
pem_pwd | string |
Парольная фраза к PEM-закодированному сертификату (если есть).
Этот параметр является устаревшим псевдонимом
для параметра URI |
||||||||||||||||||||||||||||||
serverApi | MongoDB\Driver\ServerApi |
Опция используется для объявления версии API сервера для менеджера. Если не указана, версия API не объявляется. |
||||||||||||||||||||||||||||||
weak_cert_validation | bool |
Отключает проверку сертификат, если
Этот параметр является устаревшим псевдонимом
для параметра URI |
uri
выбрасывает исключение MongoDB\Driver\Exception\RuntimeException.
Версия | Описание |
---|---|
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",
]
);
?>