mongo-php-connecting-php-persistent-9

  • Connecting
  • Persistent Connections (version 1.3.0+)

  • Persistent Connections (version 1.3.0+)
  • Persistent Connections (version 1.3.0+)

    Persistent Connections (version 1.3.0+)

    All versions of the driver since 1.3.0 utilize
    persistent connections to minimize the number of connections made
    to each database server. These connections are saved by the PHP
    worker process and may be reused between multiple requests.

    Before connecting to a database server, the driver
    will create a hash for the connection based on its host, port,
    replica set name (if any), any authentication credentials (e.g.
    username, password, database), and the process ID. If a connection
    already exists for that hash, it will be used in lieu of creating a
    new connection associated with that hash. MongoClient::getConnections() may be used to
    retrieve info about each persistent connection. Consider the
    following program:

    <?php

    $m1 = new MongoClient('mongodb://localhost');
    $m2 = new MongoClient('mongodb://localhost');
    $m3 = new MongoClient('mongodb://user:pw@localhost');
    $m4 = new MongoClient('mongodb://127.0.0.1');
    $m5 = new MongoClient('mongodb://rs1.local:30017,rs2.local:30018/?replicaSet=rs');
    $m6 = new MongoClient('mongodb://sharding.local:40017');

    foreach (MongoClient::getConnections() as $conn) {
        echo 
    $conn['hash'], "\n";
    }

    ?>

    The above example will output something similar to:

    localhost:27017;-;X;15487
    localhost:27017;-;admin/user/c56c…8bbc;15487
    127.0.0.1:27017;-;X;15487
    rs1.local:30017;rs;X;15487
    rs2.local:30018;rs;X;15487
    sharding.local:40017;-;X;15487
    

    In this example $m1 and $m2 have
    the same hash and share a persistent connection. Connections for
    each other MongoClient instance hash to unique values and use their
    own sockets. Note that “localhost” and “127.0.0.1” do not share the
    same hash; DNS resolution is not taken into account.