Docs Menu
Docs Home
/ /

MongoDB\con_transacción()

Nuevo en la versión 1.5.

MongoDB\with_transaction()

Ejecutar una devolución de llamada dentro de una transacción utilizando la sesión de cliente dada

function with_transaction(
MongoDB\Driver\Session $session,
callable $callback,
array $transactionOptions = []
): void
$session : MongoDB\Controlador\Sesión
Una sesión de cliente utilizada para ejecutar la transacción.
$callback : invocable
Una devolución de llamada que se ejecutará dentro de la transacción. Debe aceptar un objeto MongoDB\Driver\Session como primer argumento.
$transactionOptions : matriz
Opciones de transacción que se pasarán a MongoDB\Driver\Session::startTransaction. Consulta la documentación de la extensión para ver una lista de opciones compatibles.

Esta función se encarga de iniciar una transacción, invocar una devolución de llamada y confirmarla. También aplica lógica para reintentar este proceso tras ciertos errores dentro de un plazo preestablecido. Se espera que la devolución de llamada ejecute una o más operaciones dentro de la transacción, pasando el argumento MongoDB\Driver\Session de la devolución de llamada como opción para dichas operaciones; sin embargo, esto no se exige.

Nota

Se recomienda encarecidamente que las aplicaciones utilicen una devolución de llamada idempotente, ya que se puede invocar varias veces si se encuentran errores reintentables durante la ejecución o la confirmación de la devolución de llamada.

Cualquier excepción lanzada durante la ejecución de la devolución de llamada se detectará y evaluará. Si una excepción tiene una etiqueta de error TransientTransactionError, la transacción se cancelará, se reiniciará y se volverá a invocar la devolución de llamada. Para cualquier otra excepción, la transacción se cancelará y la excepción se volverá a lanzar para propagar el error al invocador de with_transaction().

Tras la ejecución correcta de la devolución de llamada, la transacción se confirmará. Si se encuentra una excepción con la etiqueta de error UnknownTransactionCommitResult, se reintentará la confirmación. Si se encuentra una excepción con la etiqueta de error TransientTransactionError, la transacción se reiniciará y el control volverá a invocar la devolución de llamada. Cualquier otra excepción se volverá a generar para propagar el error al invocador de with_transaction().

Cuando se produce un error durante la ejecución o confirmación de una devolución de llamada, el proceso solo se reintenta si han transcurrido menos de 120 segundos desde la primera llamada a with_transaction(). Este límite de tiempo no es configurable. Transcurrido este tiempo, se volverá a generar cualquier excepción que normalmente resultaría en un reintento.

MongoDB\Exception\InvalidArgumentException para errores relacionados con el análisis de parámetros u opciones.

MongoDB\Driver\Exception\RuntimeException para otros errores en el nivel de extensión (por ejemplo, errores de conexión).

Volver

eliminar_registrador()

En esta página