MongoCursor::immortal
(PECL mongo >=1.0.1)
MongoCursor::immortal — Sets whether this cursor will timeout
Описание
After remaining idle on the server for some amount of time, cursors, by default, "die." This is generally the behavior one wants. The database cleans up a cursor once all of its results have been sent to the client, but if the client doesn't request all of the results, the cursor will languish there, taking up resources. Thus, after a few minutes, the cursor "times out" and the database assumes the client has gotten everything it needs and cleans up its the cursor's resources.
If, for some reason, you need a cursor to hang around for a long time, you
can prevent the database from cleaning it up by using this method.
However, if you make a cursor immortal, you need to iterate through all of
its results (or at least until MongoCursor::dead()
returns TRUE
) or the cursor will hang around the database
forever, taking up resources.
Список параметров
-
liveForever
-
If the cursor should be immortal.
Возвращаемые значения
Returns this cursor.
Ошибки
Throws MongoCursorException if this cursor has started iterating.
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- MongoDB
- Базовые классы
- Функция MongoCursor::addOption() - Adds a top-level key/value pair to a query
- Функция MongoCursor::awaitData() - Sets whether this cursor will wait for a while for a tailable cursor to return more data
- Функция MongoCursor::batchSize() - Limits the number of elements returned in one batch.
- Функция MongoCursor::__construct() - Create a new cursor
- Функция MongoCursor::count() - Counts the number of results for this query
- Функция MongoCursor::current() - Returns the current element
- Функция MongoCursor::dead() - Checks if there are documents that have not been sent yet from the database for this cursor
- Функция MongoCursor::doQuery() - Execute the query.
- Функция MongoCursor::explain() - Return an explanation of the query, often useful for optimization and debugging
- Функция MongoCursor::fields() - Sets the fields for a query
- Функция MongoCursor::getNext() - Return the next object to which this cursor points, and advance the cursor
- Функция MongoCursor::getReadPreference() - Get the read preference for this query
- Функция MongoCursor::hasNext() - Checks if there are any more elements in this cursor
- Функция MongoCursor::hint() - Gives the database a hint about the query
- Функция MongoCursor::immortal() - Sets whether this cursor will timeout
- Функция MongoCursor::info() - Gets the query, fields, limit, and skip for this cursor
- Функция MongoCursor::key() - Returns the current result's _id
- Функция MongoCursor::limit() - Limits the number of results returned
- Функция MongoCursor::maxTimeMS() - Sets a server-side timeout for this query
- Функция MongoCursor::next() - Advances the cursor to the next result
- Функция MongoCursor::partial() - If this query should fetch partial results from mongos if a shard is down
- Функция MongoCursor::reset() - Clears the cursor
- Функция MongoCursor::rewind() - Returns the cursor to the beginning of the result set
- Функция MongoCursor::setFlag() - Sets arbitrary flags in case there is no method available the specific flag
- Функция MongoCursor::setReadPreference() - Set the read preference for this query
- Функция MongoCursor::skip() - Skips a number of results
- Функция MongoCursor::slaveOkay() - Sets whether this query can be done on a secondary [deprecated]
- Функция MongoCursor::snapshot() - Use snapshot mode for the query
- Функция MongoCursor::sort() - Sorts the results by given fields
- Функция MongoCursor::tailable() - Sets whether this cursor will be left open after fetching the last results
- Функция MongoCursor::timeout() - Sets a client-side timeout for this query
- Функция MongoCursor::valid() - Checks if the cursor is reading a valid result.
Коментарии
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.
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.