MongoDB\Driver\Manager::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Manager::__constructСоздает новый Manager MongoDB

Описание

final public MongoDB\Driver\Manager::__construct ([ string $uri = "mongodb://127.0.0.1/" [, array $uriOptions = array() [, array $driverOptions = array() ]]] )

Создает новый объект MongoDB\Driver\Manager с переданными параметрами.

Замечание: В » спецификации по обнаружению и мониторингу сервера, этот конструктор не выполняет ввода-вывода. Соединения будут инициализироваться по требованию, когда выполняется первая операция.

Замечание: На Unix, драйвер MongoDB чувствителен к сценариям, которые используют системный вызов fork() без последующего exec(). Пользователям рекомендуется не переиспользовать экземпляр MongoDB\Driver\Manager в дочернем процессе. child process.

Список параметров

uri

URI-адрес подключения » mongodb://:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

Подробнее о поддерживаемых параметрах, см. раздел » Параметры строки подключения в руководстве MongoDB. » Параметры пула подключения не поддерживаются, т.к. PHP-драйвер не реализует пулы подключений.

uri - это URL, поэтому любые специальные символы в его компонентах должны закодированы в соответствии » RFC 3986. Это особенно актуально для имени пользователя и пароля, которые часто могут содержать специальные символы, такие как @, :, или %. При подключении через доменный сокет Unix, путь сокета может содержать специальные символы, например слеши, которые необходимо закодировать. Функция rawurlencode() может использоваться для кодирования составных частей URI-адреса.

uriOptions

Дополнительные » параметры строки подключения, которые будут перезаписывать любые параметры с тем же именем в параметре uri.

uriOptions
Название опции Тип Описание
appname string

В MongoDB 3.4+ появилась возможность добавлять аннотации к соединениям с метаданными, предоставляемыми подключающимся клиентом. Эти метаданные включаются в журналы логирования сервера при установлении соединения, а также записываются в журналы медленных запросов, если включено профилирование базы данных.

Эта опция может использоваться для указания имени приложения, которое будет включено в метаданные. Значение не может превышать 128 символов.

authMechanism string

Механизм аутентификации, который MongoDB будет использовать для аутентификации соединения. Для просмотра дополнительных сведений и списка поддерживаемых значений, см. раздел » Параметры аутентификации в руководстве MongoDB.

authMechanismProperties array

Свойства для выбранного механизма аутентификации. Для просмотра дополнительных сведений и списка поддерживаемых значений, см. раздел » Спецификация аутентификации драйвера.

Замечание: Если не указана в строке URI-адреса, эта опция представляется в виде массива пар ключ-значение. Ключи и значения в этом массиве должны быть строками.

authSource string

Имя базы данных, связанное с учетными данными пользователя. По умолчанию используется компонент базы данных из URI-адреса соединения.

Для механизмов аутентификации, которые делегируют хранение учетных данных другим службам (например, GSSAPI), значение должно быть "$external".

canonicalizeHostname boolean

Если TRUE, драйвер будет преобразовывать реальное имя хоста для IP-адреса сервера перед аутентификацией через SASL. Некоторые базовые слои GSSAPI уже делают это, но эта функциональность может быть отключена в их конфигурации (например, krb.conf). По умолчанию FALSE.

Этот параметр является устаревшим псевдонимом для свойства "CANONICALIZE_HOST_NAME" параметра URI "authMechanismProperties".

compressors string

Имеющий приоритет, список разделенных запятыми компрессоров, которые клиент хочет использовать. Сообщения сжаты только в том случае, если клиент и сервер совместно используют любые компрессоры, а компрессор, используемый в каждом направлении, будет зависеть от индивидуальной конфигурации сервера или драйвера. Смотрите » Спецификация компресии драйвера для получения дополнительной информации.

connectTimeoutMS integer

Время в миллисекунд, чтобы попытаться подключиться перед тайм-аутом. По умолчанию - 10 000 миллисекунд.

gssapiServiceName string

Устанавливает имя службы Kerberos при подключении к керберизованными экземплярам MongoDB. Это значение должно совпадать именем службы, установленным в экземплярах MongoDB (т.е. с параметром сервер, » saslServiceName ). По умолчанию используется "mongodb".

Этот параметр является устаревшим псевдонимом для свойства "SERVICE_NAME" параметра URI "authMechanismProperties".

heartbeatFrequencyMS integer

Задает интервал в миллисекундах между проверками драйвера топологии MongoDB, отсчитываемыми с конца предыдущей проверки до начала следующей. По умолчанию - 60 000 миллисекунд.

Согласно » Спецификации по обнаружению и мониторингу сервера, это значение не может быть меньше 500 миллисекунд.

journal boolean

Соответствует параметру гарантий записи journal. Если TRUE, для записи будет требоваться подтверждение от MongoDB, что операция была записана в журнал. Подробнее см. MongoDB\Driver\WriteConcern.

localThresholdMS integer

Размер в миллисекундах окна задержки для выбора среди нескольких подходящих экземпляров MongoDB при разрешении предпочтения чтения. По умолчанию - 15 миллисекунд.

maxStalenessSeconds integer

Соответствует параметру предпочтениям чтения "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 boolean

Указывает, должен ли драйвер автоматически повторять определенные операции чтения, которые не выполняются из-за временных сетевых ошибок или выборов набора реплик. Требуется MongoDB 3.6+. По умолчанию TRUE.

Смотрите » Спецификацию по Retryable Reads для получения дополнительной информации.

retryWrites boolean

Указывает, должен ли драйвер автоматически повторять определенные операции записи, которые не выполняются из-за временных сетевых ошибок или выборов набора реплик. Требуется MongoDB 3.6+. По умолчанию TRUE.

Смотрите » Retryable Writes в руководстве MongoDB для получения дополнительной информации.

safe boolean

Если TRUE, указывает 1 для параметра w гарантии записи по умолчанию. Если FALSE, указывается 0. Подробнее см. MongoDB\Driver\WriteConcern.

Эта опция устарела и не должна использоваться.

serverSelectionTimeoutMS integer

Указывает как долго в миллисекунд блокировать выбор сервера перед выбросом исключения. По умолчанию - 30 000 миллисекунд.

serverSelectionTryOnce boolean

Если TRUE, то сообщает драйверу сканировать развертывание MongoDB только один раз после неудачной попытки выбора сервера, а затем либо выбрать сервер или создать ошибку. Когда FALSE, драйвер блокирует выбор и выполняет поиск сервера до истечения времени, указанного в параметре "serverSelectionTimeoutMS". По умолчанию - TRUE.

slaveOk boolean

Указывает "secondaryPreferred" для режима предпочтения чтения, если TRUE. Подробности см. MongoDB\Driver\ReadPreference.

Эта опция устарела и не должна использоваться.

socketCheckIntervalMS integer

Если сокет не использовался в последнее время, драйвер должен проверить с помощью команды isMaster, прежде чем использовать его для любой операции. По умолчанию - 5 000 миллисекунд.

socketTimeoutMS integer

Время в миллисекундах, чтобы попытаться отправить или получить в сокет до истечения времени. По умолчанию - 300 000 миллисекунд (т.е. 5 минут).

ssl boolean

Создает соединение с TLS/SSL, если TRUE. По умолчанию - FALSE.

Параметр является устаревшим псевдонимом для параметра URI "tls".

tls boolean

Инициирует соединение с TLS/SSL, если TRUE. По умолчанию FALSE.

tlsAllowInvalidCertificates boolean

Указывает, должен ли драйвер выдавать ошибку, если сертификат TLS сервера недействителен. По умолчанию FALSE.

Внимание

Отключение проверки сертификата создает уязвимость.

tlsAllowInvalidHostnames boolean

Указывает, должен ли драйвер выдавать ошибку при несоответствии имени хоста сервера и имени хоста, указанного в сертификате TLS. По умолчанию FALSE.

Внимание

Отключение проверки сертификата создает уязвимость. Разрешение недопустимых имен хоста может привести к атаке типа » "человек посередине" (man-in-the-middle).

tlsCAFile string

Путь к файлу с одним или несколькими центрами сертификации, которые следует считать доверенными при установлении соединения TLS. По умолчанию будет использоваться хранилище системных сертификатов.

tlsCertificateKeyFile string

Путь к файлу сертификата клиента или файлу закрытого ключа клиента; в случае, если они оба необходимы, файлы должны быть объединены.

tlsCertificateKeyFilePassword string

Пароль для расшифровки закрытого ключа клиента (т.е. параметра URI "tlsCertificateKeyFile"), который будет использоваться для соединений TLS.

tlsInsecure boolean

Ослабьте ограничения TLS в максимально возможной степени. При значении TRUE этот параметр имеет тот же эффект, что и указание значения TRUE для обоих параметров URI tlsAllowInvalidCertificates и "tlsAllowInvalidHostnames". По умолчанию FALSE.

Внимание

Отключение проверки сертификата создает уязвимость. Разрешение недопустимых имен хоста может привести к атаке типа » "человек посередине" (man-in-the-middle).

username string Имя пользователя для аутентификации. Эта опция полезна, если имя пользователя содержит специальные символы, которые в противном случае должны были быть закодированы в URL для URI-адреса подключения.
w integer|string

Соответствует параметру гарантий записи w. Подробнее см. MongoDB\Driver\WriteConcern.

wTimeoutMS integer|string

Соответствует параметру гарантий записи wtimeout. Указывает срок в миллисекундах для гарантии записи. Подробнее см. MongoDB\Driver\WriteConcern.

Если указан, wTimeoutMS должен быть 32-битным целым числом со знаком, большим или равным нулю.

zlibCompressionLevel integer

Указывает уровень сжатия для использования zlib. Эта опция ничего не делает, если zlib не включен в URL опции "compressors". Смотрите » Спецификация компрессии драйвера для получения дополнительной информации.

driverOptions

driverOptions
Опция Тип Описание
allow_invalid_hostname boolean

Отключает проверку имени хоста, если TRUE. По умолчанию - FALSE.

Разрешение недопустимых имен хоста может привести к атаке типа » "человек посередине" (man-in-the-middle).

Этот параметр является устаревшим псевдонимом для параметра URI "tlsAllowInvalidHostnames"

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 Путь к файлу списка аннулированных сертификатов.
pem_file string

Путь к сертификату в формате PEM для аутентификации клиента.

Этот параметр является устаревшим псевдонимом для параметра URI "tlsCertificateKeyFile".

pem_pwd string

Парольная фраза к PEM-закодированному сертификату (если есть).

Этот параметр является устаревшим псевдонимом для параметра URI "tlsCertificateKeyFilePassword".

weak_cert_validation boolean

Отключает проверку сертифика, если TRUE. По умолчанию - FALSE

Этот параметр является устаревшим псевдонимом для параметра URI "tlsAllowInvalidHostnames".

Ошибки

Список изменений

Версия Описание
1.6.0

Добавлены параметры URI "retryReads", "tls", "tlsAllowInvalidCertificates", "tlsAllowInvalidHostnames", "tlsCAFile", "tlsCertificateKeyFile", "tlsCertificateKeyFilePassword", и "tlsInsecure".

Параметр URI "retryWrites" по умолчанию TRUE.

1.5.0

"wtimeoutMS" теперь всегда проверяется и применяется к гарантии записи. Ранее эта опция игнорировалась, если "w" был <= 1, поскольку тайм-аут применяется только к репликации.

1.4.0

Добавлены опции URI "compressors", "retryWrites" и "zlibCompressionLevel".

1.3.0

В аргументе uriOptions теперь есть опции "authMechanism" и "authMechanismProperties". Раньше эти опции поддерживались только в аргументе uri.

1.2.0

Аргумент uri по умолчанию теперь "mongodb://127.0.0.1/". Порт по умолчанию не изменился - 27017.

Добавлен URI-параметр "appname".

Добавлены параметры драйвера "allow_invalid_hostname", "ca_file", "ca_dir", "clr_file", "pem_file", "pem_pwd" и "weak_cert_validation".

API потоков PHP больше не используется для соединения с сокетом. Параметр URI "connectTimeoutMS" теперь по умолчанию равен 10 секунд вместо default_socket_timeout в предыдущих версиях. Кроме того, драйвер больше не поддерживает все параметры SSL-контекста через параметр драйвера "context".

1.1.0

Аргумент uri является необязательный и по умолчанию равен "mongodb://localhost:27017/".

Примеры

Пример #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:[email protected]/mydatabase");

?>

Подключение к MongoDB с учетными данными аутентификации для конкретного пользователя и базы данных, где имя пользователя или пароль содержат специальные символы (e.g. @, :, %). В следующем примере, строка с паролем myp@ss:w%rd была вручную экранирована; однако rawurlencode() может использоваться для экранирования URI-компонетов, которые могут содержать специальные символы.

<?php

$manager 
= new MongoDB\Driver\Manager("mongodb://myusername:myp%40ss%3Aw%[email protected]/mydatabase");

?>

Подключение к MongoDB с аутентификацией X509:

<?php

$manager 
= new MongoDB\Driver\Manager(
    
"mongodb://example.com/?ssl=true&authMechanism=MONGODB-X509",
    [],
    [
        
"pem_file" => "/path/to/client.pem",
    ]
);
?>