2011-07-29 14 views
6

Zajmuję się tworzeniem strony internetowej przy użyciu PHP i mongodb. Mam dostęp do mongody z PECL-mongo i wpadłem w irytację. Co jakiś czas, pojawia się błąd jak to (mam anonimowe ścieżki)MongoCursorException "nie można uzyskać nagłówka odpowiedzi"

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 

Zgodnie z dokumentacją, to znaczy:

Kierowca nie mógł pobrać nagłówek odpowiedź bazy danych, a więc poddał się. Sprawdź, czy baza danych nadal działa, a sieć jest podłączona do sieci i spróbuj ponownie.

Ale wiem, że baza danych jest, bo robie to lokalnie na własnym komputerze na sprzężenia zwrotnego. Nie nawiązano połączenia ze światem zewnętrznym.

Po prostu próba ponownie często działa. Czy jest to prawdopodobnie błąd w sterowniku PHP dla mongo? Czy to może być problem "błędnej kompilacji" (skompilowałem ze źródła, ale z bardzo łagodnymi flagami, -march=native -O2)?

Czy ktoś to widział wcześniej?

Przeszukuję, widzę tylko odniesienia do jakiejś głupiej gry na Facebooku, która zawiera ten sam błąd.

EDIT: Właśnie obniżyła mój sterownik do wersji 1.1.4 PECL i dotychczas, problem wydaje znikły. Może to być po prostu błąd w serii 1.2.x. Jeśli ktokolwiek może rzucić na nią jakiekolwiek światło, byłoby świetnie.

EDIT: Nie robię nic skomplikowanego tutaj kod, który jest o kwestię dosłownie wygląda następująco:

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

Pierwsza uwaga, na pewno chcesz złapać wyjątek. Może to być błąd, ale bez przechwytywania danych wyjątków i rejestrowania, trudno jest wiedzieć, co się stało. Czy wystąpił błąd Query? Nieudana aktualizacja/wstawienie/usunięcie? Czy analizujesz dane, gdy tak się dzieje? –

+0

Występuję w tym samym numerze, co Ty. Jakie rozwiązanie wdrożyłeś? Utknąłem z brzydką pętlą, która sprawdza wyjątek =/ –

+0

Po prostu obniżyłem mój sterownik PECL do wersji 1.1.4. I wydaje się teraz solidny. –

Odpowiedz

Powiązane problemy