他の誰かが同じデータを同時に編集しているときに、データベースから記事/投稿/ページ/何かを開いた場合にユーザーに警告する機能を、Wordpress を含むさまざまな Web アプリケーションで見たことがあります (わかりませんか?)。
自分のアプリケーションに同じ機能を実装したいと考えており、これについて少し考えてみました。次の例は、これを行う方法の良い方法ですか?
次のようになります。
1)User A
不可思議な記事 X の編集ページに入ります。データベース テーブルEvents
を照会して、同じページを現在誰も編集していないことを確認します。次に、トークンがランダムに生成され、 というデータベース テーブルに挿入されますEvents
。
1)User B
また、記事 X を更新したいと考えています。User A
既に記事を編集しているため、Events
テーブルがクエリされ、次のようになります。
| timestamp | owner | Origin | token |
------------------------------------------------------------
| 1273226321 | User A | article-x | uniqueid## |
2) タイムスタンプがチェックされています。有効で、たとえば 100 秒未満の場合、メッセージが表示され、ユーザーは要求された記事 X を変更できません。
Warning: User A is currently working with this article. In the meantime, editing cannot be done. Please do something else with your life.
3) ユーザー A が続行して変更を保存することを決定した場合、トークンはデータベースを更新するために他のすべてのデータと共にポストされ、クエリを切り替えて token で行を削除しますuniqueid##
。彼が変更をコミットする代わりに何か他のことをすることにした場合でも、記事 X は 100 秒間編集できます。User B
このアプローチについてどう思うか教えてください!
素晴らしい週末をお過ごしください。