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 — Устанавливает, будет ли курсор отключен
После некоторого времени простоя на сервере курсоры по умолчанию "умирают". Как правило, это то, что вам нужно. База данных очищает курсор после того, как все его результаты отправлены клиенту, но если клиент не запрашивает все результаты, курсор будет там затихать, занимая ресурсы. Таким образом, через несколько минут курсор "отключается", и база данных предполагает, что клиент получил все, что ему нужно, и очищает ресурсы курсора.
Если по какой-то причине вам нужен курсор, чтобы долго зависать,
вы можете предотвратить очистку базы данных с помощью этого метода.
Однако, если вы сделаете курсор вечным, вам нужно будет перебирать все его
результаты (или, по крайней мере, до тех пор, пока MongoCursor::dead()
не вернет TRUE
), или курсор будет зависать
в базе данных вечно, занимая ресурсы.
liveForever
Если курсор должен быть вечным.
Возвращает курсор.
Выдает исключение MongoCursorException, если этот курсор начал итерацию.
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.