Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

MongoDB\with_transaction()

Nueva en la versión 1.5.

MongoDB\with_transaction()

Ejecuta una función de retorno 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\Driver\Session
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 : arreglo
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 a las aplicaciones usar una idempotentefunción de retorno, ya que puede ser invocada varias veces si se encuentran errores que se pueden volver a intentar durante la ejecución de la función de retorno o durante el compromiso.

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().

Después de la ejecución exitosa de la función de retorno, la transacción será confirmada. Si se encuentra una excepción con una etiqueta de error UnknownTransactionCommitResult, la confirmación se volverá a intentar. Si se encuentra una excepción con una etiqueta de error TransientTransactionError, la transacción se reiniciará y el control volverá a la invocación de la función de retorno. Cualquier otra excepción se volverá a lanzar para propagar el error al llamante de with_transaction().

Cuando se produce un error durante la ejecución de la función de retorno o el commit, el proceso solo se vuelve a intentar si han transcurrido menos de 120 segundos desde la primera vez que se llamó a with_transaction(). Este límite de tiempo no se puede configurar. Después de este tiempo, cualquier excepción que normalmente resultaría en un intento de reintento, en cambio, se volverá a lanzar.

MongoDB\Exception\InvalidArgumentException por 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