(PECL mongo >=1.6.0)
MongoCommandCursor::timeout — Устанавливает время ожидания на стороне клиента для команды
Время ожидания может быть установлено в любое время и повлияет на последующий поиск данных, связанный с этим курсором, включая выборку большего количества результатов из базы данных.
ms
Количество миллисекунд, в течение которых курсор ожидает ответа.
Используйте -1
, чтобы ждать вечно.
По умолчанию курсор будет ждать 30000 миллисекунд (30 секунд).
Возвращает курсор.
Вызывает методы, которые извлекают результаты, чтобы вызвать исключение MongoCursorTimeoutException, если выборка данных занимает больше времени, чем указанное количество миллисекунд.
Пример #1 Пример использования MongoCommandCursor::timeout()
В следующем примере драйвер будет ждать в течение 60 секунд первого ответа от команды. Кроме того, он будет ждать 60 секунд каждый раз, когда сервер будет опрашиваться для получения дополнительной информации.
<?php
$m = new MongoClient;
$col = $m->database->collection;
$pipeline = [ … ];
$cursor = $col->aggregateCursor( $pipeline );
$cursor->timeout( 60000 ); // на 60 секунд
foreach ( $cursor as $result ) {
…
}
?>
Это не заставит сервер MongoDB отменять длительные операции;
он только указывает драйверу прекратить ждать ответа и выдать исключение
MongoCursorTimeoutException по истечении заданного времени.
Если вам нужно указать время ожидания на стороне сервера для команды,
рассмотрите возможность передачи опции maxTimeMS
в MongoCollection::aggregateCursor().
socketTimeoutMS
для MongoClient::__construct()