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",
]
);
?>