(mongodb >=1.0.0)
MongoDB\Driver\Manager::__construct — Создаёт новый Manager MongoDB
$uri
= null
, ?array$uriOptions
= null
, ?array$driverOptions
= null
)Создаёт новый объект MongoDB\Driver\Manager с переданными параметрами.
Замечание: В » спецификации по обнаружению и мониторингу сервера, этот конструктор не выполняет ввода-вывода. Соединения будут инициализироваться по требованию, когда выполняется первая операция.
Замечание: При передаче любых URI-опций, связанных с SSL или TLS, через строку подключения или параметр
uriOptions
, драйвер неявно включает TLS при соединениях. Чтобы предотвратить это, либо явно отключите опциюtls
, либо не передавайте никаких TLS-опций.
Замечание: На Unix, драйвер MongoDB чувствителен к сценариям, которые используют системный вызов fork() без последующего exec(). Пользователям не рекомендуется переиспользовать экземпляр класса MongoDB\Driver\Manager в дочернем процессе. child process.
uri
URI-адрес подключения » mongodb://:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[defaultAuthDb][?options]]
Подробнее о поддерживаемых URI параметрах, смотрите раздел » Параметры строки подключения в руководстве MongoDB. » Параметры пула подключения не поддерживаются, т. к. PHP-драйвер не реализует пулы подключений.
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",
]
);
?>