Mongo::close
(No version information available, might only be in Git)
Mongo::close — 接続を閉じる
このメソッドを定義している拡張モジュールは非推奨です。
かわりに MongoDB 拡張モジュールを使うべきです。 このメソッドの代替は、新しい拡張モジュールには存在しません。
説明
public Mongo::close
([ bool|string $connection
] ) : bool
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
変更履歴
バージョン | 説明 |
---|---|
PECL mongo 1.3.0 | connection パラメータが追加されました。
それより前のバージョンでは、このメソッドで閉じられるのは書き込み接続だけでした。 |
PECL mongo 1.2.0 | 1.2.0 より前のバージョンでは、デフォルトでは持続的接続を使いませんでした。
そして、MongoDB の接続がスコープから抜ければすぐに閉じられていました。 バージョン 1.2.0 からはそうではなくなりました。 close を呼ばないと、高負荷な接続がサーバーを使い切ってしまう可能性があります。 |
参考
- Mongo::getConnections()