2012-03-08 19 views
0

私はPHPとモンゴDBを使用して...私はユニークMongoの致命的なエラー

キーであるUSERKEYを使用して、ユーザーの詳細情報を取得したいのですが...私のmongoクエリは次のとおりです。

 $obj= $mongo->user; 
     $filter = array(
      'userkey'=>$value 
     ); 
     $exist = $obj->findone($filter); 

私は実行しますこのクエリは、...

Fatal error: Maximum execution time of 30 seconds exceeded in line 5 

すなわち$存在= $ obj-> findone($フィルタ)等のエラーを取得しています。

誰かがplzは私を助けることができます...

+0

表示されているコードのうち、最大実行時間の原因となっている行は何ですか?また、http://php.net/manual/en/function.set-time-limit.php –

+0

@PatrickLorio:$ exist = $ obj-> findone($ filter);を参照してください....この行はエラー – Micku

+0

を示していますあなたのMongoDBログファイルには何が表示されますか? – Derick

答えて

0

ごMongoのクエリが仕事を得る、またはそれが失敗しただけで、この1であることができ、この問題を解決するためにどのようにエラー

を示して?それはあなたのデータベースに接続して何かをすることができます。私は、 "findone()"は、接続が停止して永遠に待つことを信じています。代わりに "find()"を使用し、100msのようなタイムアウトを与えることをお勧めします。これは役に立ちます。

$ cursor = $ collection-> find($ query、$ fields) - > timeout(100); $ record = $ cursor-> getNext();

明らかにタイムアウト例外をキャプチャするには、try/catchブロックでこれをラップしたいと思うでしょう。以前のバージョンのphp mongoドライバは接続タイムアウト時にsegfaultするため、最新のmongoドライバ(1.2.10以上)を使用してください。