Php/docs/mongo.connecting.persistent

提供:Dev Guides
< Php
移動先:案内検索

持続的接続 (バージョン 1.3.0 以降)

バージョン 1.3.0 以降のドライバは、持続的接続を活用してデータベースサーバーへの接続数を最小化します。 接続は PHP のワーカープロセスに保存され、別のリクエストで再利用されることもあります。

データベースサーバーに接続する前に、ドライバはその接続のハッシュ値を算出します。 このときに利用する情報は、ホストやポート、レプリカセット名 (使っている場合)、 認証情報 (ユーザー名、パスワード、データベース名)、プロセス ID です。 同じハッシュ値の接続が既に存在する場合は、新しい接続を作らずに既存の接続を再利用します。 個々の持続的接続の情報を取得するには MongoClient::getConnections() を使います。 次のプログラムを見てみましょう。

<?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";}?>

上の例の出力は、 たとえば以下のようになります。


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

この例では $m1$m2 のハッシュ値が同じになるので、 これらは持続的接続を共有します。その他の MongoClient インスタンス用の接続はハッシュ値が別になるので、 それぞれ別のソケットを利用します。 "localhost" と "127.0.0.1" のハッシュ値が同じにならないことに注意しましょう。 DNS の名前解決については考慮していません。