For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/databases/mongodb-connect-php.md.

Se connecter depuis PHP au service Public Cloud Databases pour MongoDB

Voir en Markdown

Connectez-vous à votre service Public Cloud Databases pour MongoDB en utilisant le langage de programmation PHP

Objectif

Public Cloud Databases vous permet de vous concentrer sur la création et le déploiement de vos applications cloud, pendant qu'OVHcloud prend en charge l'infrastructure de base de données et son maintien en conditions opérationnelles.

Ce guide explique comment se connecter à une instance de base de données MongoDB avec l'un des langages de programmation les plus utilisés au monde : PHP.

Vous pouvez trouver un exemple sur le dépôt d'exemples GitHub.

Prérequis

  • Un projet Public Cloud dans votre compte OVHcloud
  • Une base de données MongoDB active sur votre service Public Cloud Databases OVHcloud (vous pouvez utiliser ce guide pour remplir ce prérequis)
  • Configurer votre instance MongoDB pour accepter les connexions entrantes
  • Un environnement PHP avec une version stable et une connectivité réseau publique (Internet). Ce guide a été réalisé avec PHP 7.4.

Concept

Une instance MongoDB peut être gérée de plusieurs façons. L'une des plus simples, mais aussi des plus puissantes, consiste à utiliser une interface en ligne de commande (CLI), comme le montre notre guide : Se connecter à MongoDB avec la CLI.

Une autre méthode consiste à interagir directement à l'aide de langages de programmation, tels que PHP. PHP est utilisé dans près de 80 % des sites web dans le monde, comme Facebook, Wikipedia ou WordPress. MongoDB fournit des drivers PHP, nous permettant de connecter et de gérer une instance MongoDB depuis le code.

Pour ce faire, nous devrons configurer notre environnement PHP avec les drivers MongoDB, puis configurer nos instances Public Cloud Databases pour MongoDB pour accepter les connexions entrantes, et enfin coder en PHP pour réaliser quelques actions d'exemple.

En pratique

Configurer votre environnement PHP

Pour interagir avec votre instance MongoDB en PHP, votre environnement de développement doit être configuré avec :

  • Une version compatible de PHP ;
  • L'extension PHP MongoDB ;
  • Fortement recommandé : la librairie PHP MongoDB.

Veuillez suivre la documentation officielle MongoDB pour les drivers PHP pour obtenir les informations les plus récentes.

À la fin de la page de documentation, vous trouverez une matrice de compatibilité entre les versions de PHP, les extensions MongoDB et les versions de la librairie. Suivez-la en conséquence.

Si vous pouvez modifier votre environnement PHP vous-même, installez les extensions et librairies comme indiqué dans cette page de documentation citée ci-dessus.

À l'inverse, si vous bénéficiez d'une solution d'hébergement web managée, comme les offres OVHcloud Web Hosting, vous devez activer la bonne version de PHP sur votre offre d'hébergement web. Vous pouvez trouver ici un guide sur la modification de votre version PHP pour OVHcloud Web Hosting.

Dans les deux cas, en exécutant un phpinfo() dans votre environnement PHP, vous devriez voir des informations sur le driver MongoDB comme illustré ci-dessous :

Drivers PHP

Nous allons maintenant suivre la documentation officielle MongoDB pour effectuer notre première connexion avec PHP.

Se connecter avec PHP

Dans votre environnement PHP, essayons une connexion. Pour être sûrs d'être bien connectés, nous allons afficher toutes les informations de l'instance MongoDB.

Comme montré dans le code, nous utilisons MongoDB\Driver\Manager. Consultez la documentation officielle PHP pour une documentation exhaustive : https://www.php.net/manual/en/set.mongodb.php.

<?php
   // PHP version 7.4 used here
    try {
        // connect to OVHcloud Public Cloud Databases for MongoDB (cluster in version 4.4, MongoDB PHP Extension in 1.8.1)
        $m = new MongoDB\Driver\Manager('mongodb+srv://`<username>`:<password>@mongodb-e49d02ee-o2626ab53.database.cloud.ovh.net/admin?replicaSet=replicaset');
        echo "Connection to database successfully";
        // display the content of the driver, for diagnosis purpose
        var_dump($m);
    }
    catch (Throwable $e) {
        // catch throwables when the connection is not a success
        echo "Captured Throwable for connection : " . $e->getMessage() . PHP_EOL;
    }
?>

Si vous êtes connecté, le résultat de var_dump($m) devrait ressembler à ceci :

Object(MongoDB\Driver\Manager)#1 (2) {
  ["uri"]=>
  string(100) "mongodb+srv://`<username>`:<password>@mongodb-e49d02ee-o2626ab53.database.cloud.ovh.net/admin?replicaSet=replicaset"
  ["cluster"]=>
  array(1) {
    [0]=>
    array(10) {
      ["host"]=>
      string(45) "node1-e49d02ee-o2626ab53.database.cloud.ovh.net"
      ["port"]=>
      int(27017)
      ["type"]=>
      int(4)
      ["is_primary"]=>
      bool(true)
      ["is_secondary"]=>
      bool(false)

(more data, cut for the example)

    }
  }
}

Si var_dump($m) est vide, vous devrez analyser votre environnement PHP et la matrice de compatibilité MongoDB mentionnée précédemment, ainsi que les throwables :

  • Connection timeout : généralement dû à une autorisation IP incorrecte.
  • Invalid namespace : le Service URI que vous avez saisi contient peut-être une erreur.

Une fois connecté, vous pouvez effectuer plusieurs opérations, par exemple une insertion en masse et un find() dans une collection :

<?php
    try {
        // Bulk write inserts
        $bulk = new MongoDB\Driver\BulkWrite;
        $bulk->insert(['mydata' => 'alice']);
        $bulk->insert(['mydata' => 'bob']);
        $bulk->insert(['mydata' => 'bastien']);
        $m->executeBulkWrite('mydb.mycol', $bulk);

        $filter = ['mydata' => 'bob'];
        $options = [];

        // Query to find inserts in a specific collection
        $query = new MongoDB\Driver\Query($filter, $options);
        $cursor = $m->executeQuery('mydb.mycol', $query);

        foreach ($cursor as $document) {
            var_dump($document);
        }
    }
    catch (Throwable $e) {
        echo "Captured Throwable: for insert : " . $e->getMessage() . PHP_EOL;
    }
?>

Dans cet exemple, nous insérons 3 objets dans une collection appelée mycol, puis nous effectuons une opération find() dans cette collection, à la recherche de tous les objets contenant "bob".

Voici le résultat pour var_dump($document) :

object(stdClass)#6 (2) {
  ["_id"]=>
  object(MongoDB\BSON\ObjectId)#7 (1) {
    ["oid"]=>
    string(24) "6139d5163d84c01fa93e2e53"
  }
  ["mydata"]=>
  string(3) "bob"
}

Ce code a correctement trouvé un objet contenant bob. Cela signifie que nous avons pu nous connecter à l'instance MongoDB, insérer des données et rechercher ces données. Félicitations ! Tout fonctionne correctement.

Frameworks et outils PHP pour MongoDB

Coder en PHP à partir de zéro pour interagir avec une instance MongoDB peut être amusant et très instructif. Si cela vous intéresse, vous pouvez également consulter la liste MongoDB des librairies, frameworks et outils PHP. Ils peuvent vraiment faciliter votre travail avec PHP.

Aller plus loin

Fonctionnalités de MongoDB

Configurer le vRack pour Public Cloud

Visitez notre chaîne Discord dédiée : https://discord.gg/ovhcloud. Posez vos questions, faites-nous part de vos commentaires et interagissez directement avec l’équipe qui développe nos services de bases de données.

Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.

Rejoignez notre communauté d'utilisateurs.

Cette page vous a-t-elle aidé ?