MongoDB\with_transaction()
バージョン 1.5 の新機能。
定義
パラメーター
$session
:MongoDB\Driver\Session- トランザクションの実行に使用されるクライアント セッション。
$callback
: 呼び出し可能- トランザクション内で実行されるコールバック。 コールバックは MongoDB\Driver\Sessionを受け入れる必要があります オブジェクトを最初の引数として指定します。
$transactionOptions
: 配列- MongoDB\Driver\Session::startTransactionに渡されるトランザクション オプション 。サポートされているオプションのリストについては、拡張機能のドキュメントを参照してください。
動作
この関数は、トランザクションの開始、コールバックの呼び出し、トランザクションのコミットを行います。 また、事前設定された時間制限内に特定のエラーが発生した後に、このプロセスを再試行するロジックも適用されます。 コールバックは、コールバックの MongoDB\Driver\Sessionを渡すことで、トランザクション内で 1 つ以上の操作を実行することが予想されます これらの操作のオプションとしての 引数。ただし、これは強制されません。
注意
コールバックの実行中にスローされた例外は、キャッチされて評価されます。 例外にTransientTransactionError
エラー ラベルが付いている場合、トランザクションは中止されて再開され、コールバックが再度呼び出されます。 その他の例外の場合、トランザクションは中止され、例外が再スローされて、 with_transaction()
の呼び出し元にエラーが伝達されます。
コールバックが正常に実行されると、トランザクションはコミットされます。 UnknownTransactionCommitResult エラー ラベルの付いた例外が発生した場合、コミットは再試行されます。 TransientTransactionError
エラー ラベルの例外が発生した場合、トランザクションは再起動され、制御はコールバックの呼び出しに戻ります。 その他の例外は再スローされて、 with_transaction()
の呼び出し元にエラーが伝達されます。
コールバック実行またはコミット中にエラーが発生した場合、 with_transaction()
が最初に呼び出されてから 120 秒未満が経過した場合にのみプロセスは再試行されます。 この時間制限は構成できません。 この時間の経過後、通常再試行される例外はすべて再スローされます。
エラーと例外
MongoDB\Exception\InvalidArgumentException
は、パラメータまたはオプションの解析に関連するエラーの場合は です。MongoDB\Driver\Exception\RuntimeException拡張レベルのその他のエラー(例:)。