あなたは、ソートのこの作品を作るために3つの部品が必要です。
ファイルをいつ編集するのかを示すフィールドをデータベースに追加する必要があります。 "LastUsed"のようなフィールドを作成し、編集のためにファイルを開いたときのタイムスタンプを記録します。誰かがファイルを開こうとすると、タイムスタンプをチェックします。タイムスタンプが最近のもの(最後の5分)であれば、それを第2のユーザーが開くことはできません。
ファイルを編集できるページで、数分ごとにajaxリクエストが実行されます。必要なのは、編集中のファイルのタイムスタンプを現在の日付と時刻に更新することだけです。
その後、ajaxリクエストが停止してデータベース内のタイムスタンプが期限切れになる特定のポイントに達すると、タイマーが実行される可能性があります。ただし、ユーザーが操作を行うたびに、そのタイマーがリセットされます。ユーザーが何かをしている限り、タイマーはリセットされ、ajaxリクエストはデータベース内のタイムスタンプの更新を継続できます。ユーザーが一定の時間内に何かをしないと、タイマーが起動し、Ajaxリクエストが停止し、タイムスタンプが期限切れになり、他の誰かが編集用に開くことができます。また、同じタイマーを使用して、編集セッションの期限切れなどのメッセージを表示することもできます。
それは基本的に次のように機能します。ユーザーは、AJAXリクエストが継続的に「LASTUSED」タイムスタンプを更新しているファイルを編集しているとき
。
ファイルを編集するためにそのページが開いている限り、ajaxリクエストはデータベースのタイムスタンプを最新の状態に保ちます。
人がページを開いたままで何もしていない場合は、タイマーが起動してajaxリクエストを停止します。これにより、誰かがファイルを編集できるようになります。
人がページを離れると、ajaxリクエストはもはやタイムスタンプを更新できなくなります。そうすれば、ある人がページを離れるだけで、他の人がファイルを編集することができます。
したがって、「LastUsed」タイムスタンプが最後の5分以内に2番目のユーザーがファイルを編集しようとすると、ほかの誰かがファイルを編集していることがわかります。タイムスタンプが5分より大きい場合は、現在誰も編集用にファイルを開いていないことを知っているので、2人目のユーザーが編集できます。
良い質問です。これを行うつもりです。+1 –