MongoDB\Driver\Cursor::isDead
mongodb >=1.0.0)
MongoDB\Driver\Cursor::isDead — 커서가 모두 소모되었는지 또는 추가 결과가 있는지 확인합니다.
설명
final public MongoDB\Driver\Cursor::isDead(): bool
커서에서 사용할 수 있는 추가 결과가 확실히 없는지 확인합니다. 이 메서드는 MongoDB 셸의 » Cursor.isExhausted() 메서드와 유사하며 » tailable cursors를 반복할 때 주로 유용합니다.
커서는 추가 결과가 없으며 다음 중 하나가 참인 경우 "dead"
것으로 간주됩니다.
- 현재 배치가 완전히 반복되었으며 커서 ID는 0입니다(즉, » getMore를 실행할 수 없음).
- 커서를 반복하는 동안 오류가 발생했습니다.
- 커서가 구성된 제한에 도달했습니다.
의도적으로 커서에 추가 결과가 있는지 여부를 항상 확인할 수 있는 것은 아닙니다. 커서가 더 많은 데이터를 사용할 수 있는 경우는 다음과 같습니다.
- 클라이언트 측에서 버퍼링되는 현재 배치에 추가 문서가 있습니다. 반복하면 로컬 버퍼에서 문서를 가져옵니다.
- 현재 배치(로컬 버퍼)에는 추가 문서가 없지만 커서 ID는 0이 아닙니다. 반복은 » getMore 작업을 통해 서버에서 더 많은 문서를 요청합니다. 이 작업은 추가 결과를 반환하거나 반환하지 않을 수 있으며/또는 ID에 대해 0을 반환하여 서버에서 커서가 닫혔음을 나타냅니다.
매개변수
이 함수에는 매개변수가 없습니다.
반환 값
커서에서 사용할 수 있는 추가 결과가 확실히 없으면 true
를 반환하고 그렇지 않으면 false
를 반환합니다.
오류/예외
- 인수 구문 분석 오류에 대해 MongoDB\Driver\Exception\InvalidArgumentException을 던집니다.
Examples
예제 #1 MongoDB\Driver\Cursor::isDead() 예제
<?php
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query = new MongoDB\Driver\Query([]);
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);
$cursor = $manager->executeQuery('db.collection', $query);
$iterator = new IteratorIterator($cursor);
$iterator->rewind();
var_dump($cursor->isDead());
$iterator->next();
var_dump($cursor->isDead());
$iterator->next();
var_dump($cursor->isDead());
$iterator->next();
var_dump($cursor->isDead());
?>
위의 예는 다음을 출력합니다.
bool(false) bool(false) bool(false) bool(true)
기타
- MongoDB 매뉴얼의 » Tailable Cursors
- MongoDB 매뉴얼의 » cursor.isExhausted()