Docs Menu
Docs Home
/ / /
PHP 라이브러리 매뉴얼
/ /

MongoDB\with_transaction()

이 페이지의 내용

  • 정의
  • 매개변수
  • 행동
  • 오류/예외
  • 다음도 참조하세요.

버전 1.5에 새로 추가되었습니다.

MongoDB\with_transaction()

지정된 클라이언트 세션을 사용하여 트랜잭션 내에서 콜백 실행

function with_transaction(
MongoDB\Driver\Session $session,
callable $callback,
array $transactionOptions = []
): void
$session : MongoDB\Driver\Session
트랜잭션을 실행하는 데 사용되는 클라이언트 세션입니다.
$callback : 호출 가능
트랜잭션 내에서 실행될 콜백입니다. 콜백은 MongoDB\Driver\Session 을 허용해야 합니다. 객체를 첫 번째 인수로 지정합니다.
$transactionOptions : 배열
MongoDB\Driver\Session::startTransaction 으로 전달될 트랜잭션 옵션 . 지원되는 옵션 목록은 확장 프로그램 설명서를 참조하세요.

이 함수는 트랜잭션 시작, 콜백 호출, 트랜잭션 커밋을 담당합니다. 또한 사전 설정된 시간 제한 내에 특정 오류가 발생하면 이 프로세스를 다시 시도하는 로직을 적용합니다. 콜백은 콜백의 MongoDB\Driver\Session 을 전달하여 트랜잭션 내에서 하나 이상의 작업을 실행할 것으로 예상됩니다. 인수를 해당 연산에 대한 옵션으로 지정합니다. 그러나 이는 시행되지 않습니다.

참고

애플리케이션은 멱등 을 사용할 것을 강력히 권장합니다. 콜백 실행 또는 커밋 중에 재시도 가능 오류가 발생하면 여러 번 호출될 수 있기 때문입니다.

콜백 실행 중에 발생한 예외는 모두 포착되어 평가됩니다. 예외에 TransientTransactionError 오류 레이블이 있는 경우 트랜잭션이 중단되고 다시 시작된 후 콜백이 다시 호출됩니다. 다른 예외의 경우 트랜잭션이 중단되고 예외가 다시 발생하여 with_transaction() 의 호출자에게 오류를 전파합니다.

콜백이 성공적으로 실행되면 트랜잭션이 커밋됩니다. UnknownTransactionCommitResult 오류 레이블이 있는 예외가 발생하면 커밋이 다시 시도됩니다. TransientTransactionError 오류 레이블이 있는 예외가 발생하면 트랜잭션이 다시 시작되고 제어가 콜백 호출로 돌아갑니다. 다른 예외는 with_transaction() 의 호출자에게 오류를 전파하기 위해 다시 발생합니다.

콜백 실행 또는 커밋 중에 오류가 발생하면 with_transaction() 이(가) 처음 호출된 이후 120초 미만이 경과한 경우에만 프로세스가 재시도됩니다. 이 시간 제한은 구성할 수 없습니다. 이 시간이 지나면 일반적으로 재시도를 초래하는 모든 예외가 대신 다시 발생합니다.

MongoDB\Exception\InvalidArgumentException 매개변수 또는 옵션의 구문 분석과 관련된 오류의 경우입니다.

MongoDB\ 드라이버\Exception\RuntimeException 확장 수준의 다른 오류(예: 연결 오류).

돌아가기

remove_logger()