Calling immortal(false), in order to remove the NO_TIMEOUT flag from the cursor, seems to crash with "Fatal error: Exception thrown without a stack frame in Unknown on line 0". I'm running PHP 5.2.17 and MongoDB driver 1.1.4.
(PECL mongo >=1.0.1)
MongoCursor::immortal — Establece si este cursor expirará
Después de permanecer inactivo en el servidor por algún tiempo, los cursores, por omisión, "mueren". Este es el compotamiento general que se desea. La base de datos limpia un cursor una vez que todos sus resultados han sido enviados al cliente, pero si el cliente no solicita todos los resultados, el cursor decaerá en ese momento, tomando recursos. Por lo tanto, después de unos minutos, el cursor "expira" y la base de datos asume que el cliente ha obtenido todo lo que necesita, y limpia los recursos del cursor.
Si, por cualquier motivo, fuera necesario que un cursor espere durante más tiempo,
se puede evitar que la base de datos lo limpie usando este método. Sin embargo,
si se hace inmortal a un cursor, es necesario iterar a través de todos sus
resultados (o al menos hasta que MongoCursor::dead()
devuelva TRUE
) o el cursor esperará a la base de datos
para siempre, tomando recursos.
liveForever
Si el cursor debería ser inmortal.
Devuelve este cursor.
Lanza una MongoCursorException si este cursor ha empezado a iterar.
Calling immortal(false), in order to remove the NO_TIMEOUT flag from the cursor, seems to crash with "Fatal error: Exception thrown without a stack frame in Unknown on line 0". I'm running PHP 5.2.17 and MongoDB driver 1.1.4.
Note:: There there is an important distinction between timeout and immortal!
Timeout indicates the time to wait on the _client_ side while immortal sets the cursor on the server side.
It is especially useful for large result sets in sharded environments.