0

リチウムに関して次の問題があります。ローカルホストで mongodb に接続するとすべて正常に動作しますが、EC2 でリモートの mongodb に接続すると、次のエラーが表示されます。

致命的なエラー: /Library/WebServer/Documents/v0.4/libraries/lithium/data/source/MongoDb.php:430 で、「操作が進行中です」というメッセージを含むキャッチされない例外「MongoCursorException」

両方の mongodb バージョンは同じ (1.8.0) で、シェルを使用してリモートの mongodb に接続できます。Mac osx snow leopardで、リチウム0.9.9、mongo phpドライバー1.1.4、およびphpバージョン5.3.4を実行しています。

助言がありますか?

更新: 最新のマスター バージョンで試しましたが、まだエラーが発生します。ここで私の完全なスタック トレースを表示できます: http://pastium.org/view/90c1dd7201eca845913c4101a205a023

4

1 に答える 1

1

このエラーは、多くの場合、データベースへの接続のタイムアウトに関連しています。

これは、Web サーバーと MongoDB サーバーが異なるホスト、ネットワーク、またはプロバイダー (あなたの場合は EC2 など) にある場合に、ネットワークの待ち時間が原因で発生する可能性が高くなります ...

Lithium で設定されているデフォルトのタイムアウトは です100 ms。これは、一部のネットワーク構成では遅すぎる可能性があります (ただし、通常はまったく問題ありません)。

これはここに文書化されています: Lithium MongoDB Adapter

Lithium MongoDB アダプターのタイムアウト設定

ここで、Lithium でのデフォルトの MongoDB 接続構成を確認できます: (現時点では 153 行目) ...

https://github.com/UnionOfRAD/lithium/blob/master/data/source/MongoDb.php

そのページのコメントから、

'timeout' integer : 接続試行がタイムアウトして例外がスローされるまでに待機するミリ秒数。

デフォルトは100

于 2012-05-22T21:09:26.130 に答える