MongoDB\Driver\Manager::__construct
(mongodb >=1.0.0)
MongoDB\Driver\Manager::__construct — Создает новый Manager MongoDB
Описание
$uri
= "mongodb://127.0.0.1/"
, array $uriOptions
= array()
, array $driverOptions
= array()
)Создает новый объект 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
может использоваться для указания имени базы данных, связанной с учетными данными пользователя; однако параметр URIauthSource
будет иметь приоритет, если он указан. Если ниdefaultAuthDb
, ниauthSource
не указаны, база данныхadmin
будет использоваться по умолчанию. КомпонентdefaultAuthDb
не имеет смысла при отсутствии учетных данных пользователя. uriOptions
-
Дополнительные » параметры строки подключения, которые будут перезаписывать любые параметры с тем же именем в параметре
uri
.uriOptions Название опции Тип Описание appname string В MongoDB 3.4+ появилась возможность добавлять аннотации к соединениям с метаданными, предоставляемыми подключающимся клиентом. Эти метаданные включаются в журналы логирования сервера при установлении соединения, а также записываются в журналы медленных запросов, если включено профилирование базы данных.
Эта опция может использоваться для указания имени приложения, которое будет включено в метаданные. Значение не может превышать 128 символов.
authMechanism string Механизм аутентификации, который MongoDB будет использовать для аутентификации соединения. Для просмотра дополнительных сведений и списка поддерживаемых значений, смотрите раздел » Параметры аутентификации в руководстве MongoDB.
authMechanismProperties array Свойства для выбранного механизма аутентификации. Для просмотра дополнительных сведений и списка поддерживаемых значений, смотрите раздел » Спецификация аутентификации драйвера.
Замечание: Если не указана в строке URI-адреса, эта опция представляется в виде массива пар ключ-значение. Ключи и значения в этом массиве должны быть строками.
authSource string Имя базы данных, связанное с учетными данными пользователя. По умолчанию используется компонент базы данных из URI-адреса соединения или база данных
admin
, если оба не указаны.Для механизмов аутентификации, которые делегируют хранение учетных данных другим службам (например, GSSAPI), значение должно быть
"$external"
.canonicalizeHostname bool Если
true
, драйвер будет преобразовывать реальное имя хоста для IP-адреса сервера перед аутентификацией через SASL. Некоторые базовые слои GSSAPI уже делают это, но эта функциональность может быть отключена в их конфигурации (например,krb.conf
). По умолчаниюfalse
.Этот параметр является устаревшим псевдонимом для свойства
"CANONICALIZE_HOST_NAME"
параметра URI"authMechanismProperties"
.compressors string Имеющий приоритет, список разделенных запятыми компрессоров, которые клиент хочет использовать. Сообщения сжаты только в том случае, если клиент и сервер совместно используют любые компрессоры, а компрессор, используемый в каждом направлении, будет зависеть от индивидуальной конфигурации сервера или драйвера. Смотрите » Спецификация компресии драйвера для получения дополнительной информации.
connectTimeoutMS int Время в миллисекунд, чтобы попытаться подключиться перед тайм-аутом. По умолчанию - 10 000 миллисекунд.
directConnection bool Этот параметр можно использовать для управления поведением обнаружения набора реплик, если в строке подключения указан только один хост. По умолчанию, предоставление одного члена в строке подключения приведет к установлению прямого подключения или обнаружению дополнительных членов в зависимости от того, отсутствует или отсутствует опция URI
"replicaSet"
соответственно. Укажитеfalse
, чтобы вызвать обнаружение (если"replicaSet"
опущен) или укажитеtrue
, чтобы форсировать прямое соединение (если"replicaSet"
присутствует).gssapiServiceName string Устанавливает имя службы Kerberos при подключении к керберизованными экземплярам MongoDB. Это значение должно совпадать именем службы, установленным в экземплярах MongoDB (т.е. с параметром сервер, » saslServiceName ). По умолчанию используется
"mongodb"
.Этот параметр является устаревшим псевдонимом для свойства
"SERVICE_NAME"
параметра URI"authMechanismProperties"
.heartbeatFrequencyMS int Задает интервал в миллисекундах между проверками драйвера топологии MongoDB, отсчитываемыми с конца предыдущей проверки до начала следующей. По умолчанию - 60 000 миллисекунд.
Согласно » Спецификации по обнаружению и мониторингу сервера, это значение не может быть меньше 500 миллисекунд.
journal bool Соответствует параметру гарантий записи
journal
. Еслиtrue
, для записи будет требоваться подтверждение от MongoDB, что операция была записана в журнал. Подробнее см. MongoDB\Driver\WriteConcern.localThresholdMS int Размер в миллисекундах окна задержки для выбора среди нескольких подходящих экземпляров MongoDB при разрешении предпочтения чтения. По умолчанию - 15 миллисекунд.
maxStalenessSeconds int Соответствует параметру предпочтениям чтения
"maxStalenessSeconds"
. Указывает в секундах насколько устаревшим может быть вторичный узел в наборе реплик, прежде чем клиент перестанет его использовать для операций чтения. По умолчанию не задано максимальное отставание репликации (staleness) и клиенты не будут учитывать отставание вторичного узла при выборе при выборе направления операции чтения. Подробнее см. MongoDB\Driver\ReadPreference.Если указана, максимальное отставание должно быть 32-битным целым числом, большим или равным
MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS
(т.е. 90 секунд).password string Пароль для аутентификации пользователя. Эта опция полезна, если пароль содержит специальные символы, которые в противном случае должны были закодированы для URI-адреса подключения. readConcernLevel string Соответствует параметру гарантий чтения level
Определяет уровень изоляции чтения. Подробнее смотрите MongoDB\Driver\ReadConcern.readPreference string Соответствует параметру предпочтениям чтения
mode
По умолчанию -"primary"
. Подробнее смотрите MongoDB\Driver\ReadPreference.readPreferenceTags array Соответствует параметру предпочтениям чтения
tagSets
. Наборы тегов позволяют настраивать операции чтения для опреденных членов набора реплики. Подробнее смотрите MongoDB\Driver\ReadPreference.Замечание: Если в строке URI не указано, этот параметр представляется как как массив, соответствующий формату, ожидаемому MongoDB\Driver\ReadPreference::__construct().
replicaSet string Задает имя набора реплики.
retryReads bool Указывает, должен ли драйвер автоматически повторять определенные операции чтения, которые не выполняются из-за временных сетевых ошибок или выборов набора реплик. Требуется MongoDB 3.6+. По умолчанию
true
.Смотрите » Спецификацию по Retryable Reads для получения дополнительной информации.
retryWrites bool Указывает, должен ли драйвер автоматически повторять определенные операции записи, которые не выполняются из-за временных сетевых ошибок или выборов набора реплик. Требуется MongoDB 3.6+. По умолчанию
true
.Смотрите » Retryable Writes в руководстве MongoDB для получения дополнительной информации.
safe bool Если
true
, указывает1
для параметраw
гарантии записи по умолчанию. Еслиfalse
, указывается0
. Подробнее смотрите MongoDB\Driver\WriteConcern.Эта опция устарела и не должна использоваться.
serverSelectionTimeoutMS int Указывает как долго в миллисекунд блокировать выбор сервера перед выбросом исключения. По умолчанию - 30 000 миллисекунд.
serverSelectionTryOnce bool Если
true
, то сообщает драйверу сканировать развертывание MongoDB только один раз после неудачной попытки выбора сервера, а затем либо выбрать сервер или создать ошибку. Когдаfalse
, драйвер блокирует выбор и выполняет поиск сервера до истечения времени, указанного в параметре"serverSelectionTimeoutMS"
. По умолчанию -true
.slaveOk bool Указывает
"secondaryPreferred"
для режима предпочтения чтения, еслиtrue
. Подробности смотрите MongoDB\Driver\ReadPreference.Эта опция устарела и не должна использоваться.
socketCheckIntervalMS int Если сокет не использовался в последнее время, драйвер должен проверить с помощью команды
isMaster
, прежде чем использовать его для любой операции. По умолчанию - 5 000 миллисекунд.socketTimeoutMS int Время в миллисекундах, чтобы попытаться отправить или получить в сокет до истечения времени. По умолчанию - 300 000 миллисекунд (т.е. 5 минут).
ssl bool Создает соединение с TLS/SSL, если
true
. По умолчанию -false
.Параметр является устаревшим псевдонимом для параметра URI
"tls"
.tls bool Инициирует соединение с TLS/SSL, если
true
. По умолчаниюfalse
.tlsAllowInvalidCertificates bool Указывает, должен ли драйвер выдавать ошибку, если сертификат TLS сервера недействителен. По умолчанию
false
.ВниманиеОтключение проверки сертификата создает уязвимость.
tlsAllowInvalidHostnames bool Указывает, должен ли драйвер выдавать ошибку при несоответствии имени хоста сервера и имени хоста, указанного в сертификате TLS. По умолчанию
false
.ВниманиеОтключение проверки сертификата создает уязвимость. Разрешение недопустимых имен хоста может привести к атаке типа » "человек посередине" (man-in-the-middle).
tlsCAFile string Путь к файлу с одним или несколькими центрами сертификации, которые следует считать доверенными при установлении соединения TLS. По умолчанию будет использоваться хранилище системных сертификатов.
tlsCertificateKeyFile string Путь к файлу сертификата клиента или файлу закрытого ключа клиента; в случае, если они оба необходимы, файлы должны быть объединены.
tlsCertificateKeyFilePassword string Пароль для расшифровки закрытого ключа клиента (т.е. параметра URI
"tlsCertificateKeyFile"
), который будет использоваться для соединений TLS.tlsDisableCertificateRevocationCheck bool Если
true
, драйвер не будет пытаться проверить статус отзыва сертификата (например, OCSP, CRL). По умолчаниюfalse
.tlsDisableOCSPEndpointCheck bool Если
true
, драйвер не будет пытаться связаться с конечной точкой ответа OCSP, если это необходимо (то есть ответ OCSP не сшивается). По умолчаниюfalse
.tlsInsecure bool Ослабьте ограничения TLS в максимально возможной степени. При значении
true
этот параметр имеет тот же эффект, что и указание значенияtrue
для обоих параметров URI"tlsAllowInvalidCertificates"
и"tlsAllowInvalidHostnames"
. По умолчаниюfalse
.ВниманиеОтключение проверки сертификата создает уязвимость. Разрешение недопустимых имен хоста может привести к атаке типа » "человек посередине" (man-in-the-middle).
username string Имя пользователя для аутентификации. Эта опция полезна, если имя пользователя содержит специальные символы, которые в противном случае должны были быть закодированы в URL для URI-адреса подключения. w int|string Соответствует параметру гарантий записи
w
. Подробнее смотрите MongoDB\Driver\WriteConcern.wTimeoutMS int|string Соответствует параметру гарантий записи
wtimeout
. Указывает срок в миллисекундах для гарантии записи. Подробнее смотрите MongoDB\Driver\WriteConcern.Если указан,
wTimeoutMS
должен быть 32-битным целым числом со знаком, большим или равным нулю.zlibCompressionLevel int Указывает уровень сжатия для использования zlib. Эта опция ничего не делает, если
zlib
не включен в URL опции"compressors"
. Смотрите » Спецификация компрессии драйвера для получения дополнительной информации. driverOptions
-
driverOptions Опция Тип Описание allow_invalid_hostname bool Отключает проверку имени хоста, если
true
. По умолчанию -false
.Разрешение недопустимых имен хоста может привести к атаке типа » "человек посередине" (man-in-the-middle).
Этот параметр является устаревшим псевдонимом для параметра URI
"tlsAllowInvalidHostnames"
autoEncryption array Предоставляет опции для включения автоматического шифрования на уровне поля на стороне клиента. Поддерживаются следующие опции:
Опции для автоматического шифрования Опция Тип Описание keyVaultClient MongoDB\Driver\Manager Менеджер используется для маршрутизации запросов ключей данных в отдельный кластер MongoDB. По умолчанию используется текущий менеджер и кластер. keyVaultNamespace string Полное пространство имен (например, "databaseName.collectionName"
), обозначающее коллекцию, которая содержит все ключи данных, используемые для шифрования и дешифрования.kmsProviders array Документ, содержащий конфигурацию для одного или нескольких провайдеров KMS, которые используются для шифрования ключей данных. В настоящее время поддерживаются
aws
илиlocal
, и, по крайней мере, один из них должен быть указан.Формат для
aws
выглядит следующим образом:aws: { accessKeyId: <string>, secretAccessKey: <string> }
Формат для
local
выглядит следующим образом:local: { // Главный ключ, используемый для шифрования/дешифрования ключей данных key: <96-byte MongoDB\BSON\Binary with subtype 0> }
schemaMap array Позволяет указать локальную схему JSON, которая используется для настройки шифрования.
Замечание: Добавление
schemaMap
обеспечивает большую безопасность, чем использование схем JSON, полученных с сервера. Это защищает от вредоносного сервера, рекламирующего ложную схему JSON, которая может заставить клиента отправлять незашифрованные данные, которые должны быть зашифрованы.Замечание: Схемы, поставляемые в
schemaMap
, применяются только для настройки автоматического шифрования на стороне клиента. Другие правила проверки в схеме JSON не будут применяться драйвером и приведут к ошибке.bypassAutoEncryption bool Если для этого параметра установлено значение true
,mongocryptd
не будет появляться автоматически. Это используется для отключения автоматического шифрования.extraOptions array extraOptions
относится к процессуmongocryptd
. Смотрите » Руководство по шифрованию на стороне клиента, чтобы получить больше информации.Замечание: Автоматическое шифрование — это только корпоративная функция, которая применяется только к операциям над коллекцией. Автоматическое шифрование не поддерживается для операций с базой данных или представлением, операции, которые не получится обойти, приведут к ошибке. Чтобы обойти автоматическое шифрование для всех операций, установите
bypassAutoEncryption=true
вautoEncryption
. Для получения дополнительной информации об операциях в белом списке смотрите » Руководство по шифрованию на стороне клиента.ca_dir string Путь к корректно захешированному каталогу сертификатов. По умолчанию будет использоваться хранилище системных сертификатов.
ca_file string Путь к файлу с одним или несколькими центрами сертификации, которые следует считать доверенными при установлении соединения TLS. По умолчанию будет использоваться хранилище системных сертификатов.
Параметр является устаревшим псевдонимом для параметра URI
"tlsCAFile"
.context resource Параметры контекста SSL для использования в качестве запасного варианта, если не указана опция драйвера или эквивалентная ей опция URI. Обратите внимание, что драйвер не обращается к контексту потока по умолчанию (т.е. stream_context_get_default()). Поддерживаются следующие параметры контекста:
Резервные параметры контекста SSL Параметр драйвера Параметр контекста (запасной вариант) ca_dir capath ca_file cafile pem_file local_cert pem_pwd passphrase weak_cert_validation allow_self_signed Параметр поддерживается для обратной совместимости, но его следует считать устаревшим.
crl_file string Путь к файлу списка аннулированных сертификатов. driver array Позволяет пользовательским драйверам добавлять свои метаданные к рукопожатию сервера. По умолчанию драйвер передает свое собственное имя, версию и платформу (то есть версию PHP) в рукопожатие. Пользовательские драйверы могут указывать строки для ключей
"name"
,"version"
и"platform"
этого массива, которые будут добавлены к соответствующие поля в документе рукопожатия.Замечание: Информация о рукопожатии ограничена 512 байтами. Драйвер урезает данные рукопожатия, чтобы соответствовать этой 512-байтовой строке. Драйверам и ODM рекомендуется сохранять краткость своих метаданных.
pem_file string Путь к сертификату в формате PEM для аутентификации клиента.
Этот параметр является устаревшим псевдонимом для параметра URI
"tlsCertificateKeyFile"
.pem_pwd string Парольная фраза к PEM-закодированному сертификату (если есть).
Этот параметр является устаревшим псевдонимом для параметра URI
"tlsCertificateKeyFilePassword"
.weak_cert_validation bool Отключает проверку сертифика, если
true
. По умолчанию -false
Этот параметр является устаревшим псевдонимом для параметра URI
"tlsAllowInvalidHostnames"
.
Ошибки
- При ошибке парсинга аргумента бросает исключение MongoDB\Driver\Exception\InvalidArgumentException.
- При неверном формате
uri
выбрасывает исключение MongoDB\Driver\Exception\RuntimeException.
Список изменений
Версия | Описание |
---|---|
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",
]
);
?>