Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
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\ 드라이버\Session
트랜잭션을 실행하는 데 사용되는 클라이언트 세션입니다.
$callback : 호출 가능
트랜잭션 내에서 실행 콜백 . 콜백 첫 번째 인수로 MongoDB\ 드라이버\Session 객체 허용해야 합니다.
$transactionOptions : 배열
트랜잭션 옵션은 MongoDB\ 드라이버\Session::startTransaction으로 전달됩니다. 지원되는 옵션 목록은 확장 프로그램 설명서를 참조하세요.

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

참고

콜백 실행 또는 커밋 중에 재시도 가능 오류가 발생하면 여러 번 호출될 수 있으므로 애플리케이션은 멱등 콜백 사용하는 것이 좋습니다.

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

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

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

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

확장 수준의 기타 오류(예: 연결 오류)에 대한MongoDB\ 드라이버\Exception\RuntimeException입니다.

돌아가기

remove_logger()

이 페이지의 내용