(バージョン情報なし。おそらく SVN 版にしか存在しないでしょう)
Mongo::close — 接続を閉じる
$connection
] )Mongo::close() メソッドは、 データベースとの接続を強制的に閉じます。持続的接続を使っていても同じです。 通常は、決して このメソッドを使う必要はありません。
connection
指定しなかったり FALSE
を渡したりした場合は、
書き込み用に選ばれた接続を閉じます。単一ノード構成の場合はすべての接続を閉じることになりますが、
レプリカセットに接続している場合は、close() とするとプライマリサーバーへの接続
だけ を閉じることになります。
TRUE
を渡すと、コネクションマネージャーが把握しているすべての接続を閉じます。
つまり、close を呼んだオブジェクトを作ったときの接続文字列に含まれていない接続も、
閉じる対象になる可能性があります。
文字列を渡すと、このハッシュが指す接続だけを閉じます。 ハッシュとは接続の識別子のことで、Mongo::getConnections() を呼ぶと取得できます。
接続を閉じるのに成功したかどうかを返します。
例1 MongoClient::close() の例
この例は、セカンダリへの接続だけを選んで閉じる方法を示すものです。
<?php
// レプリカセットに接続します
$a = new Mongo("mongodb://whisky:13000/?replicaset=seta");
$connections = $a->getConnections();
foreach ( $connections as $con )
{
// すべての接続をループし、型が "SECONDARY"
// のときに接続を閉じます
if ( $con['connection']['connection_type_desc'] == "SECONDARY" )
{
echo "Closing '{$con['hash']}': ";
$closed = $a->close( $con['hash'] );
echo $closed ? "ok" : "failed", "\n";
}
}
?>
上の例の出力は以下となります。
Closing 'whisky:13001;X;4948': ok
バージョン | 説明 |
---|---|
1.3.0 |
|
1.2.0 |
1.2.0 より前のバージョンでは、デフォルトでは持続的接続を使いませんでした。 そして、MongoDB の接続がスコープから抜ければすぐに閉じられていました。 バージョン 1.2.0 からはそうではなくなりました。 close を呼ばないと、高負荷な接続がサーバーを使い切ってしまう可能性があります。 |