手動での持続的接続 (バージョン 1.1.4 まで限定)

注意:

この節は 1.2.0 以降のバージョンには関係ありません。 1.2.0 以降、接続は常に持続的なものとなり、 ドライバが自動管理するようになりました。 1.2.x (1.3.x 以降は除く) を使っている場合は、 プーリングに関する詳細な情報は MongoPool を参照ください。

データベースへの接続を新たに確立させるには、非常に時間がかかります。 データベースへ接続の作成回数を最小限にするには、持続的接続を使うことができます。 持続的接続は PHP が保持するので、同じ接続を使って複数のリクエストを送ることができます。

たとえば、この単純なプログラムはデータベースに 1000 回接続します。

<?php

for ($i=0$i<1000$i++) {
  
$m = new MongoClient();
}

?>

実行時間は約 18 秒です。これを、持続的接続を使うように変更してみましょう。

<?php

for ($i=0$i<1000$i++) {
  
$m = new MongoClient("localhost:27017", array("persist" => "x"));
}

?>

実行時間は 0.02 秒未満になりました。データベースへの接続は 1 回だけしか行わないからです。

持続的接続には識別用の文字列 (上の例では "x") が必要で、これを使って接続を識別します。 持続的接続を使うには、ホスト名とポート、持続文字列、そしてユーザー名とパスワード(指定した場合) が既存の持続的接続と一致しなければなりません。 一致しない場合は、この識別情報で新しい接続を作成します。

持続的接続を使うことを強く推奨します。 実運用環境では、やむを得ぬ理由がない限り常に持続的接続を使うべきです。 リレーショナルデータベースにおいて持続的接続を推奨しない理由はいくつかありますが、 その大半は MongoDB には無関係なものです。