Nueva en la versión 1.5.
Definición
Parámetros
$session: MongoDB\Driver\Session- Una sesión de cliente utilizada para ejecutar la transacción.
$callbackinvocable- Una función de retorno que se ejecutará dentro de la transacción. La función de retorno debe aceptar un objeto MongoDB\Driver\Session como su 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.
Comportamiento
Esta función es responsable de iniciar una transacción, invocar una función de retorno y confirmar una transacción. También aplica la lógica para reintentar este proceso después de ciertos errores dentro de un límite de tiempo preestablecido. Se espera que la función de retorno ejecute una o más operaciones dentro de la transacción pasando el argumento MongoDB\Driver\Session de la función de retorno como una opción para esas operaciones; sin embargo, eso 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 función de retorno será capturada y evaluada. Si una excepción tiene una etiqueta de error TransientTransactionError, la transacción se abortará, reiniciará y se invocará la función de retorno de nuevo. Para cualquier otra excepción, la transacción será abortada y la excepción relanzada para propagar el error al llamador 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.
Errores/Excepciones
MongoDB\Exception\InvalidArgumentException por errores relacionados con el análisis de parámetros u opciones.
MongoDB\Driver\Exception\RuntimeException para otros errores a nivel de extensión (por ejemplo, " errores de conexión).
Ver también
Transacciones: API de controladores documentación en el manual de MongoDB
API conveniente para transacciones especificaciones