PHP Velho Oeste 2024

MongoCursor::immortal

(PECL mongo >=1.0.1)

MongoCursor::immortalУстанавливает, будет ли курсор отключен

Описание

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

После некоторого времени простоя на сервере курсоры по умолчанию "умирают". Как правило, это то, что вам нужно. База данных очищает курсор после того, как все его результаты отправлены клиенту, но если клиент не запрашивает все результаты, курсор будет там затихать, занимая ресурсы. Таким образом, через несколько минут курсор "отключается", и база данных предполагает, что клиент получил все, что ему нужно, и очищает ресурсы курсора.

Если по какой-то причине вам нужен курсор, чтобы долго зависать, вы можете предотвратить очистку базы данных с помощью этого метода. Однако, если вы сделаете курсор вечным, вам нужно будет перебирать все его результаты (или, по крайней мере, до тех пор, пока MongoCursor::dead() не вернет TRUE), или курсор будет зависать в базе данных вечно, занимая ресурсы.

Список параметров

liveForever

Если курсор должен быть вечным.

Возвращаемые значения

Возвращает курсор.

Ошибки

Выдает исключение MongoCursorException, если этот курсор начал итерацию.

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