MongoCursor::slaveOkay
(PECL mongo >=0.9.4)
MongoCursor::slaveOkay — このクエリをセカンダリ上で完了できるかどうかを設定する
説明
このメソッドをコールすると、以下の条件を満たす場合にドライバが読み込みをセカンダリに回すようになります。
- レプリカセットを使っている
- MongoClient インスタンスを作るときに、オプション "replicaSet" => "setName" を指定している
- ドライバからアクセス可能な、正常なセカンダリが存在する
セカンダリへの自動ルーティングを使っていない場合でも、この関数を使わなければならないことに注意しましょう。 レプリカセットのセカンダリに直接接続したとしても、この関数をコールすべきです。 そうすることで、古いデータであることを承知の上で取得しているのだということを データベースに伝えることができます。コールしなければ、クエリを実行すると "not master" エラーが発生します。
このメソッドは、静的クラス変数 MongoCursor::$slaveOkay を上書きします。 また、 Mongo::setSlaveOkay() や MongoDB::setSlaveOkay()、 MongoCollection::setSlaveOkay() も上書きします。
パラメータ
-
okay -
セカンダリに問い合わせることが可能かどうか。
返り値
このカーソルを返します。
エラー / 例外
このカーソルの反復処理が始まっている場合に MongoCursorException をスローします。
例
例1 MongoCursor::slaveOkay() の例
<?php
MongoCursor::$slaveOkay = false;
// セカンダリには問い合わせられません
$cursor = $collection->find();
// セカンダリに問い合わせることができます
$cursor = $collection->find()->slaveOkay();
MongoCursor::$slaveOkay = true;
// セカンダリに問い合わせることができます
$cursor = $collection->find();
// セカンダリには問い合わせられません
$cursor = $collection->find()->slaveOkay(false);
?>
参考
- 優先読み込み
- MongoCursor::setReadPreference() - このクエリの優先読み込みを設定する
- MongoCursor::getReadPreference() - このクエリの優先読み込みを取得する