2011-07-29 7 views
6

Estoy desarrollando un sitio web usando PHP y mongodb. Accedo al mongodb con PECL-mongo, y me he encontrado con una molestia. De vez en cuando, me sale un error como este (he anónimos los caminos)MongoCursorException 'no se pudo obtener el encabezado de respuesta'

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 

Según la documentación, esto significa:

El conductor no podría alcanzar una cabecera de respuesta de la base de datos, por lo que dio por vencido. Compruebe si la base de datos aún está activa y si la red está conectada y vuelva a intentar la consulta.

Pero yo sé que la base de datos es porque yo estoy haciendo esto de forma local en mi propia máquina a través de bucle de retorno. No se hace conexión con el mundo exterior.

Simplemente volver a intentar funciona con frecuencia. ¿Es esto posiblemente un error en el controlador de PHP para mongo? ¿Podría ser un problema de "error de compilación" (compilado desde la fuente, pero con indicadores muy benignos, -march=native -O2)?

¿Alguien ha visto esto antes?

Buscando por todas partes, solo veo referencias a algún estúpido juego de Facebook que tiene el mismo error.

EDITAR: Sólo rebajó mi conductor PECL a la versión 1.1.4 y hasta ahora, el problema parece haber desaparecido. Así que esto puede ser simplemente un error en la serie 1.2.x. Si alguien puede arrojar alguna luz sobre eso, sería genial.

EDITAR: No estoy haciendo nada compleja aquí, el código que está teniendo el problema literalmente se parece a esto:

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

Así que, primero que nada, definitivamente quiere ver la excepción. Puede haber un error aquí, pero sin capturar la excepción y el registro de datos, es difícil saber qué sucedió. ¿Hubo una consulta fallida? ¿Una actualización/inserción/eliminación fallidas? ¿Estás pasando por los datos cuando esto sucede? –

+0

Me encuentro con el mismo problema que tú. ¿Qué solución terminaste implementando? Estoy atascado con un bucle feo que comprueba la excepción =/ –

+0

Acabo de degradar mi controlador PECL a la versión 1.1.4. Y parece sólido ahora. –

Respuesta

Cuestiones relacionadas