2011-07-29 130 views
6

我正在開發一個使用PHP和mongodb的網站。我用PECL-mongo訪問了mongodb,並且遇到了麻煩。時不時地,我得到這樣一個錯誤(我匿名路徑)MongoCursorException'無法獲得響應頭'

Fatal error: Uncaught exception 'MongoCursorException' with message 'couldn't get response header' in 
    /PATH/index.php:38 Stack trace: #0 
    /PATH/index.php(38): MongoCursor->rewind() #1 
    /PATH/template.inc(29): get_sidebar() #2 
    /PATH/index.php(13): 
    require_once('PATH/...') #3 {main} thrown in PATH/index.php on line 38 

根據該文件,這意味着:

驅動程序無法獲取來自一個答覆頭數據庫,所以 放棄了。檢查數據庫是否仍然運行,並且連接了網絡 並再次嘗試查詢。

但我知道數據庫建立,因爲我在當地我自己的機器上回環這樣做。與外界沒有任何聯繫。

只需再次嘗試即可。這可能是PHP驅動程序mongo中的一個錯誤?這可能是一個「不良編譯」問題(我從源代碼編譯,但帶有非常良性的標誌,-march=native -O2)?

有沒有人見過這個?

四周搜索,我只看到一些愚蠢的facebook遊戲引用有相同的錯誤。

編輯:我剛剛降級我PECL驅動程序版本1.1.4和到目前爲止,這個問題似乎已經消失。所以這可能只是1.2.x系列中的一個錯誤。如果任何人都可以闡明它,那會很棒。

編輯:我沒有做任何事情複雜在這裏,就是litterally有問題的代碼如下所示:

$m = new Mongo(); 
$collection = $m->my_db->collection; 
$results = $collection->find(array("favorite"=>true))->limit(5); 
+0

所以首先要注意的是,你一定要抓住Exception。這裏可能有一個錯誤,但沒有捕獲異常和日誌記錄數據,很難知道發生了什麼。有沒有失敗的查詢?失敗的更新/插入/刪除?當發生這種情況時,你是否正在通過數據進行遊標? –

+0

我遇到了和你一樣的問題。你最終實施了什麼解決方案?我被一個醜陋的循環卡住,檢查異常=/ –

+0

我只是將我的PECL驅動程序降級到版本1.1.4。現在看起來很穩定。 –

回答