Menu Docs
Página inicial do Docs
/ / /
Manual da Biblioteca PHP
/ /

MongoDB\with_transaction()

Nesta página

  • Definição
  • Parâmetros
  • Comportamento
  • Erros/exceções
  • Veja também

Novidade na versão 1.5.

MongoDB\with_transaction()

Executar uma chamada de resposta dentro de uma transação usando a sessão de cliente fornecida

function with_transaction(
MongoDB\Driver\Session $session,
callable $callback,
array $transactionOptions = []
): void
$session : MongoDB\Driver\Session
Uma sessão de cliente usada para executar a transação.
$callback : callable
Um retorno de chamada que será executado dentro da transação. A chamada de resposta deve aceitar um MongoDB\Driver\Session objeto como seu primeiro argumento.
$transactionOptions : array
Opções de transação, que serão passadas para MongoDB\Driver\Session::startTransaction. Consulte a documentação da extensão para obter uma lista de opções suportadas.

Essa função é responsável por iniciar uma transação, invocar uma chamada de resposta e confirmar uma transação. Também se aplica lógica para tentar novamente esse processo após determinados erros dentro de um limite de tempo predefinido. Espera-se que a chamada de resposta execute uma ou mais operações dentro da transaçãopassando o MongoDB\Driver\Session da chamada de resposta argumento como uma opção para essas operações; no entanto, isso não é aplicado.

Observação

Os aplicativos são altamente encorajados a usar um idempotente chamada de resposta, pois ela pode ser invocada várias vezes se forem encontrados erros repetíveis durante a execução ou confirmação da chamada de resposta.

Qualquer exceção lançada durante a execução da chamada de resposta será detectada e avaliada. Se uma exceção tiver um rótulo de erro TransientTransactionError , a transação será abortada, reiniciada e a chamada de resposta será invocada novamente. Para qualquer outra exceção, a transação será cancelada e a exceção será lançada novamente para propagar o erro para o chamador de with_transaction().

Após a execução bem-sucedida da chamada de resposta, a transação será confirmada. Se uma exceção com um rótulo de erro UnknownTransactionCommitResult for encontrada, a confirmação será repetida. Se uma exceção com uma etiqueta de erro TransientTransactionError for encontrada, a transação será reiniciada e o controle retornará para invocar a chamada de resposta. Qualquer outra exceção será lançada novamente para propagar o erro para o chamador de with_transaction().

Quando ocorre um erro durante a execução ou a confirmação da chamada de resposta, o processo só é repetido se tiverem decorrido menos de 120 segundos desde que with_transaction() foi chamado pela primeira vez. Este limite de tempo não é configurável. Após esse período, qualquer exceção que normalmente resultaria em uma tentativa de repetição será lançada novamente.

MongoDB\Exception\InvalidArgumentException para erros relacionados à análise de parâmetros ou opções.

MongoDB\Driver\Exception\RuntimeException para outros erros no nível da extensão (por exemplo erros de conexão).

Voltar

remove_logger()