私が関与しているアプリケーション用に簡単なレコード ロックを開発することを考えていました。レコードの編集を完了するのに文字通り何時間もかかるユーザーが何人かいます。これにより、他の誰かがレコードを変更したい場合に問題が発生します。現在、関連するロックはありません。
レコードは AJAX リクエストを介して保存されるため、私の場合、楽観的ロックが信頼できるかどうかはわかりません。ある種の悲観的ロックの適用を検討しています。locked_user_idとlocked_timestampなどの 2 つのフィールドを使用して、レコードを開いているユーザーと最後に開いた時刻を追跡できます。
しかし、ユーザーは一度に何時間も開いている可能性があるため、ユーザーがそれを放棄したのか、それとも一生懸命取り組んでいるのかをどうやって知ることができますか? 5分ごとに更新するように強制したくありませんが、それは可能かもしれません(AJAXは5分ごとに保存します)。
おそらく、ユーザーが作業している間、jQuery プロセスがカウントし、5 分ごとに AJAX リクエスト (getJSON) を起動して、locking_timestamp を更新する可能性があります。そうすれば、誰がレコードに取り組んでいるかを維持できます。タイムスタンプが「古く」なった後、ユーザーはレコードを使用しなくなったと推測できます。この種のロックを経験した人はいますか?