Класс MongoClient
(PECL mongo >=1.3.0)
Введение
Подключение между PHP и MongoDB.
Данный класс служит для создания и управления подключениями. Типичное использование:
Пример #1 Типичное использование MongoClient
<?php
$m = new MongoClient(); // соединение
$db = $m->foo; // получаем базу данных "foo"
?>
Смотрите MongoClient::__construct() и раздел по созданию подключений для более подробной информации по подключению к Mongo.
Обзор классов
MongoClient
{
/* Константы */
/* Свойства */
protected
string
$server
=
NULL
;
protected
boolean
$persistent
=
NULL
;/* Методы */
public __construct
([ string
}$server
= "mongodb://localhost:27017"
[, array $options
= array("connect" => TRUE
)
[, array $driver_options
]]] )Предопределенные константы
Константы MongoClient
MongoClient::VERSION
- Версия PHP драйвера. Может оканчиваться символом "+" или "-", если это промежуточная версия.
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
, если у нас есть открытое соединение с базой на основе ReadPreference и tagsets (для соединений ReplicaSet), иначе -FALSE
. Этот параметр не учитывает аутентификацию. - status
-
Если это постоянное подключение, т.е. оно было создано для данного объекта или
используется созданное ранее. Если это не постоянное подключение, данный параметр
должен быть
NULL
.
Смотрите также
- 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.