Класс MongoClient
(PECL mongo >=1.3.0)
Введение
Менеджер подключения между PHP и MongoDB.
Данный класс служит для создания и управления подключениями. Типичное использование:
Пример #1 Типичное использование MongoClient
<?php
$m = new MongoClient(); // соединение
$db = $m->foo; // получаем базу данных "foo"
?>
Смотрите MongoClient::__construct() и раздел по созданию подключений для более подробной информации по подключению к Mongo.
Обзор классов
NULL
;NULL
;$server
= "mongodb://localhost:27017"
[, array $options
= array("connect" => TRUE
)
[, array $driver_options
]]] )Предопределенные константы
Константы MongoClient
MongoClient::VERSION
- Версия PHP драйвера. Может оканчиваться суффиксом "dev", "+" или "-", если это промежуточная версия.
MongoClient::DEFAULT_HOST
-
"localhost"
- Адрес сервера Mongo, к которому будет происходить подключение, если адрес не указан.
MongoClient::DEFAULT_PORT
-
27017
- Порт, к которому будет производиться подключение, если он не указан.
MongoClient::RP_PRIMARY
-
"primary"
- Предпочтение по выборке для основного члена набора реплик.
MongoClient::RP_PRIMARY_PREFERRED
-
"primaryPreferred"
- Предпочтение по выборке для предпочтительного основного члена набора реплик.
MongoClient::RP_SECONDARY
-
"secondary"
- Предпочтение по выборке для вторичного члена набора реплик.
MongoClient::RP_SECONDARY_PREFERRED
-
"secondaryPreferred"
- Предпочтение по выборке для предпочтительного вторичного члена набора реплик.
MongoClient::RP_NEAREST
-
"nearest"
- Предпочтение по выборке для ближайшего члена набора реплик.
Параметры
- connected
-
Этот параметр будет установлен в
TRUE
, если есть открытое соединение с базой, иначе -FALSE
. Если соединение происходит к набору реплик, то это свойство может быть равнымTRUE
в случае, если есть соединение к узлу, соответствующему текущей настройке на чтение. Этот параметр не учитывает аутентификацию.Это свойство устарело с версии 1.5.0.
- status
-
Это свойство больше не используется и должно быть установлено в
NULL
. В драйвере версии 1.1.x и ранее, это свойство можно задать строками (т.е. "recycled", "new"), если используется постоянное соединение.Это свойство устарело с версии 1.5.0.
Смотрите также
- Read Preferences
- Write Concerns
- Connecting
- Основная документация MongoDB о » соединениях
Содержание
- MongoClient::close — Closes this connection
- MongoClient::connect — Connects to a database server
- MongoClient::__construct — Creates a new database connection object
- MongoClient::dropDB — Drops a database [deprecated]
- MongoClient::__get — Gets a database
- MongoClient::getConnections — Return info about all open connections
- MongoClient::getHosts — Updates status for all associated hosts
- MongoClient::getReadPreference — Get the read preference for this connection
- MongoClient::getWriteConcern — Get the write concern for this connection
- MongoClient::killCursor — Kills a specific cursor on the server
- MongoClient::listDBs — Lists all of the databases available.
- MongoClient::selectCollection — Gets a database collection
- MongoClient::selectDB — Gets a database
- MongoClient::setReadPreference — Set the read preference for this connection
- MongoClient::setWriteConcern — Set the write concern for this connection
- MongoClient::__toString — String representation of this connection
Коментарии
Seeing as the Mongo class has been deprecated, I'm using the following code to allow compatibility with the pre 1.3.0 driver successfully.
<?php
$class = 'MongoClient';
if(!class_exists($class)){
$class = 'Mongo';
}
$conn = new $class($hosts, $args);
?>
php monogo driver 1.3.4
feb 2013
After demoting old replicaset primary to secondary, and promoting old replicaset second into primary, we began seeing "No candidate servers found" MongoException at initial attempt to connect to (new) replicaset primary (via this hint in the /etc/mongo.conf: replSet = rs1/pri.eastghost.com)
Fix seems to be
1. NEVER list "localhost" in the bind= line of /etc/mongo.conf
2. ALWAYS list every replica set member in every member's /etc/hosts file -- there seems to be something wrong with DNS lookup timing.
This will help maintain sanity while debugging replicaSet connectivity problems:
error_reporting( E_ALL )
// print every log message possible
\MongoLog::setLevel(\MongoLog::ALL); // all log levels
\MongoLog::setModule(\MongoLog::ALL); // all parts of the driver
Using the 1.2.5-5.5 vc11 driver the connected attribute is depracted.
One MongoClient is required per every MongoDB.
So, if you have a website-specific database but also a shared database (like maybe one holding ZipCodes and State names), then each needs its own MongoClient. One MongoClient can not be shared amongst multiple MongoDB's.