Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/ /

MongoDB\with_transaction()

項目一覧

  • 定義
  • パラメーター
  • 動作
  • エラーと例外
  • その他の参照

バージョン 1.5 の新機能

MongoDB\with_transaction()

指定されたクライアント セッションを使用してトランザクション内でコールバックを実行

function with_transaction(
MongoDB\Driver\Session $session,
callable $callback,
array $transactionOptions = []
): void
$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 拡張レベルのその他のエラー(例:)。

戻る

delete_logger()