MongoCursor::timeout
(PECL mongo >=1.0.3)
MongoCursor::timeout — Устанавливает время ожидания на стороне клиента для запроса
Описание
Время ожидания может быть установлено в любое время и повлияет на последующие запросы курсора, включая выборку большого количества результатов из базы данных.
Список параметров
-
ms
-
Количество миллисекунд, в течение которых курсор ожидает ответа. Используйте
-1
, чтобы ждать бесконечно. По умолчанию курсор будет ждать 30000 миллисекунд (30 секунд).
Возвращаемые значения
Возвращает курсор.
Ошибки
Вызывает методы, которые извлекают результаты, чтобы вызвать исключение MongoCursorTimeoutException, если запрос занимает больше времени, чем указанное количество миллисекунд.
Примеры
Пример #1 Пример использования MongoCursor::timeout()
В следующем примере драйвер будет бесконечно ждать первоначального ответа базы данных, а затем ждать 100 миллисекунд для последующих ответов.
<?php
$cursor = $collection->find();
$cursor->timeout(-1);
/* $cursor->hasNext() выполняет запрос. Устанавливаем бесконечное время ожидания,
/* поэтому драйвер будет ждать ответа столько, сколько потребуется.
*/
while ($cursor->hasNext()) {
$cursor->timeout(100);
/* Время ожидания уже установлено, поэтому, если курсору нужно получить
/* больше результатов из базы данных, он будет ждать ответа только 100 мс.
*/
try {
print_r($cursor->getNext());
} catch (MongoCursorTimeoutException $e) {
echo "запрос занял слишком много времени!";
}
}
?>
Примечания
Это не заставляет сервер MongoDB отменять длительные операции; он только указывает драйверу прекратить ждать ответа и выдать исключение MongoCursorTimeoutException по истечении заданного времени. Если вам нужно указать время ожидания для запроса на стороне сервера, попробуйте использовать MongoCursor::maxTimeMS().
Смотрите также
- MongoCursorInterface::timeout() - Устанавливает время ожидания на стороне клиента для текущего запроса
- Опция
socketTimeoutMS
для MongoClient::__construct()