Mongo
PHP Manual

Mongo::__construct

(PECL mongo >=0.9.0)

Mongo::__constructCrée un nouvel objet de connexion à une base de données Mongo

Description

Mongo::__construct ([ string $server = "mongodb://localhost:27017" [, array $options = array("connect" => TRUE) ]] )

Si aucun paramètre n'est passé, la connexion se fera sur "localhost:27017" (ou ce qui a été spécifié dans php.ini pour mongo.default_host et mongo.default_port).

Depuis la version 1.0.2, server peut avoir une forme spéciale:

mongodb://[username:password@]host1[:port1][,host2[:port2:],...]/db

Il débute par mongodb://, pour indiquer qu'il s'agit d'une chaine de connexion.

Si username et password sont précisés, le constructeur tentera d'authentifier la connexion à la base. Username et password sont optionnels et doivent être suivis d'une @, si renseignés.

Au moins un hôte doit être précisé (port optionnel, par défaut 27017) et plusieurs hôtes vers lesquels se connecter peuvent être passés. Les noms d'hôtes sont séparés par des virgules et le constructeur exécutera sans erreur si au moins un des hôtes peut être connecté. Si il ne peut se connecter à aucun hôte, il enverra une MongoConnectionException.

Enfin, si vous avez précisé un username et un password, vous devez préciser une base de données envers laquelle s'authentifier. Si db n'est pas renseigné, "admin" sera utilisé.

Avertissement

Format pour server

Avant la version 1.0.2, server ne pouvait être préfixé par mongodb://, il ne pouvait contenir de username et password, ou encore contenir plus de deux noms d'hôtes. Voyez le changelog pour les détails.

Si vous ne voulez pas vous connecter immédiatement (vous passez l'option array("connect" => false)), vous devrez appeler Mongo::connect() avant toute opération vers la base.

<?php

$mongo 
= new Mongo("mongodb://localhost", array("connect" => false);

// Émet une exception MongoException, vu que $mongo n'a pas été totalement initialisé
$mongo->selectDB("foo")->command(array("distinct" => "bar""key" => "age"));

// ok
$mongo->connect();
$mongo->selectDB("foo")->command(array("distinct" => "bar""key" => "age"));

?>

Liste de paramètres

server

Le nom du serveur.

options

Un tableau d'options pour la connexion. Les options disponibles sont:

  • "connect"

    Si le constructeur doit se connecter avant de retourner l'objet. Par défaut TRUE.

  • "persist"

    Si la connexion doit être persistante. La chaine représentant la valeur est utilisée comme identifiant de connexion, ainsi deux instances de Mongo qui sont initialisées avec array("persist" => "foobar") vont partager la même connexion à la base, alors que une instance initialisée avec array("persist" => "barbaz") utilisera une connexion différente.

  • "timeout"

    Période avant timeout (tentative de connexion à la base). En millisecondes.

Valeurs de retour

Retourne un nouvel objet de connexion à la base de données Mongo.

Erreurs / Exceptions

Emet une exception MongoConnectionException si la connexion échoue avec les identifiants pour la base de données considérée ou si les identifiants sont invalides.

Historique

Version Description
1.0.2 Le constructeur a changé pour accepter une tableau. Avant 1.0.2, le constructeur acceptait les paramètres suivants:
server

Nom du serveur

connect

Paramètre optionnel indiquant si le constructeur doit se connecter à la base avant de retourner l'objet. Par défaut TRUE.

persistent

Si la connexion doit être persistante.

paired

Si la connexion doit être pairée.

Exemples

Exemple #1 Exemple avec Mongo::__construct() et une connexion pairée

Cet exemple montre comment se connecter avec le driver à une paire de serveurs répliqués Mongo.

<?php

// Passer une liste séparée par une virgule de noms de serveurs au constructeur
$m1 = new Mongo("mongodb://www.example1.com,www.example2.com");

// Si les serveurs de base de données ne sont pas en fonctionnement sur le port
// par défaut (27017), vous devez spécifier le port
$m2 = new Mongo("mongodb://www.example1.com:12345,www.example.com:54321");

// Vous pouvez vous connecter à plus d'un serveur aussi
$m3 = new Mongo("mongodb://localhost:27017,localhost:27018,localhost:27019");

?>

Exemple #2 Exemple avec Mongo::__construct() et une connexion persistante

Une connexion persistante est utilisée lorsque vous devez faire plus d'une requête. Elle permet de réduire significativement le temps dû aux reconnexions.

Une connexion persistante est identifiée par la chaîne du serveur et une chaine représentant un identifiant.

<?php

// Crée une connexion persistante
$m1 = new Mongo("mongodb://localhost", array("persist" => ""));

// Utilise la même connexion que $m1
$m2 = new Mongo("mongodb://localhost", array("persist" => ""));

// Crée une nouvelle connexion
$m3 = new Mongo("mongodb://127.0.0.1", array("persist" => ""));

// Crée une nouvelle connexion
$m4 = new Mongo("mongodb://127.0.0.1:27017", array("persist" => ""));

// Crée une nouvelle connexion
$m5 = new Mongo("mongodb://localhost", array("persist" => "foo"));

// Utilise la connexion $m5
$m6 = new Mongo("mongodb://localhost", array("persist" => "foo"));

?>

Exemple #3 Exemple d'authentification Mongo::__construct()

Un utilisateur doit exister dans la base de données admin avant de lancer l'authentification. Vous pouvez créer un utilisateur avec la commande shell Mongo suivante:

> use admin
switched to db admin
> db.addUser("testUser", "testPass");
{
        "_id" : ObjectId("4b21272fd9ab21611d19095c"),
        "user" : "testUser",
        "pwd" : "03b9b27e0abf1865e2f6fcbd9845dd59"
}
>

Après avoir crée un utilisateur, dans notre cas de nom "testUser" et password "testPass", vous pouvez créer une connexion authentifiée:

<?php

$m 
= new Mongo("mongodb://testUser:testPass@localhost");

?>

Mongo
PHP Manual