アプリケーション ロジック (特に OAuth アクセス トークンの更新時) で競合状態を防ぐための解決策を見つけようとしていますが、バックエンド データベースがたまたま mongodb になっています。
MySQL のバックグラウンドから来て、私は使用に慣れてGET_LOCK
おり、PHP でブロッキングを処理するための関連関数です。Mongo には MySQL のGET_LOCK
機能に類似した機能がありますか、それとも PHP のファイル ロックなどを使用する必要がありますか?
flock()
この状況に適した(または適切な)代替手段はありますか、それともファイルの読み取りおよび書き込み時にのみ使用することを意図していますか?
編集:
私が防止しようとしている競合状態は次のとおりです。
インスタンス A は、OAuth アクセス トークンの有効期限が近づいていることを通知します
インスタンス B は、OAuth アクセス トークンの有効期限が近づいていることを通知します
インスタンス A は、リモート サーバーから更新された OAuth アクセス トークンを要求し、それを取得します。
インスタンス B は、同じサーバーから更新された OAuth アクセス トークンを要求し、拒否されます (サーバーは、セキュリティ上の予防措置として、ステップ 3 のアクセス トークンを無効にする可能性があります)。
インスタンス A は結果をデータベースに保存します
インスタンス B は結果をデータベースに保存します