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 — Définit si le curseur doit s'interrompre après un certain délai
Après un certain délai sur le serveur, le curseur, par défaut, "meurt". C'est en général le comportement que nous souhaitons. La base de données nettoie le curseur une fois que ses résultats ont été envoyés au client, mais si le client ne demande pas tous les résultats, le curseur sera toujours "vivant", prenant ainsi des ressources. Aussi, après quelques minutes, le curseur atteint son délai d'expiration et la base de données considère que le client a récupéré tout ce dont il avait besoin et supprime les ressources allouées à ce curseur.
Si, pour une raison particulière, vous avez besoin d'un délai plus important
avant que le curseur ne meurt, vous pouvez empécher la base de données de le
supprimer en utilisant cette méthode. Cependant, si vous rendez un curseur
"immortel", vous devez parcourir tous ses résultats (ou, tout du moins,
jusqu'à ce que la méthode MongoCursor::dead() retourne FALSE
)
ou bien le curseur sera pour toujours actif, prenant ainsi
des ressources par toujours nécessaire.
liveForever
Si le curseur doit être immortel, ou non.
Returns this cursor.
Lance une exception MongoCursorException si le curseur a commencé à être parcouru.
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.