PHP Velho Oeste 2024

MongoCursor::immortal

(PECL mongo >=1.0.1)

MongoCursor::immortalEstablece si este cursor expirará

Descripción

public MongoCursor::immortal ([ bool $liveForever = true ] ) : MongoCursor

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.

Parámetros

liveForever

Si el cursor debería ser inmortal.

Valores devueltos

Devuelve este cursor.

Errores/Excepciones

Lanza una MongoCursorException si este cursor ha empezado a iterar.

add a note add a note

User Contributed Notes 2 notes

up
0
fastest963 at gmail dot com
10 years ago
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.
up
0
iknox {at} info.com
12 years ago
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.
To Top