1

mongodbのレプリカセットへの典型的なPHP呼び出し

$m1 = new Mongo("mongodb://sf2.example.com,ny1.example.com", 
      array("replicaSet" => "myReplSet"));

文書は言った:

// you only need to pass a single seed, the driver will derive the full list and
// find the master from this seed

質問:

  1. それで、それはドライバーがderive the full listすべての要求に応じることを意味しますか?それとも彼らはそれをキャッシュしますか?

  2. キャッシュすると、フェイルオーバー時に問題が発生しますか?slave降格されている間に書き込みますsecondary

  3. 書き込みエラーが発生した場合、ドライバーはサーバーリストを更新し、書き込みを再試行しますか?
4

1 に答える 1

2

あなたの質問に答えるには:

1)PHPドライバーは、ほとんどのMongoDBドライバーと同様に、接続情報を取得するとキャッシュします。

2)フェイルオーバーが発生した場合、以前のプライマリノードはすべてのクライアントへのすべての接続を切断します。次回ドライバーがソケットの読み取りまたは書き込みを試みると、エラーが発生します。操作時にドライバーが新しいプライマリノードに再接続できない場合、PHPMongoConnectionException例外がスローされます。

3)この例外をキャッチし、この例外がスローされたときに再試行するのは、アプリケーションの責任です。

参照: http: //php.net/manual/en/mongo.connecting.php

于 2012-08-28T20:11:31.933 に答える