2012-02-07 26 views
1

これはデータ共有に関する一般的な問題です。共有データ間の衝突

私は自分のメーリングリストを同僚と共有できるシステムを構築しています。

私はユーザAが同じページを開いて編集するにそのユーザーの後にデータをデータ、 を編集して提出し、ユーザーBの変更はキャンセルとなりますUSERBページ、 を開き、問題があると思います。

私はPHPを使用しているので、このようなエラーを防ぐ方法はありますか?ありがとう。

php/jqueryで提供されているコーディング例はありますか?ありがとうございます

答えて

1

エディションログを作成するので、ユーザーAはconent verを更新します。 123からverへ。 124、ユーザーBもverを更新しようとします。 123自分のやり方では、サーバー上には既にバージョンがあります。 124と表示されるので、そのコンテンツは最近別のユーザーによって変更されたというメッセージをユーザーBに表示します。

このプリンシペは、たとえばSVNで使用されます。

+0

ウィキペディア(および他のウィキ)もこの方法で動作します。しかし、合併は難しいかもしれません。 –

+0

php/jqueryで提供されているコーディング例はありますか?ありがとうたくさん – user782104

+0

データモデルへの変更とコード – SergeS

0

いくつかの解決策があります。 最も単純なのは、誰かがページを見ているときにtrueに設定され、ロックされている間に誰かがそのページに入ることを拒否するデータベースに「ロック」フィールドを持つことです。これはいい考えではありません。なぜなら、誰かがページを離れたときに取得するのが難しいため、ページは永遠にロックされたままになる可能性があるからです。

この問題を回避するには、サーバーにメッセージを送信して10秒ごとにページをロックする小さなAJAX呼び出しを使用します。ページロックには30秒の制限があります。

おそらく最良の方法は、(これはシステムに依存するが)、彼らが別のユーザーによって編集されたときに動的にページのコンポーネントを再ロードするためにAJAXを使用する(と彼らはが編集されているときにそれらの隣にメッセージを置くことです)、同時に両方のユーザーが同じフィールドを編集している場合に警告します。

+0

の私のシステムでは私はwikiレベルのように実装する必要はないと思うので、例を作るのは難しいですか?それはフィールドが少ないメールリストに過ぎないからです。 – user782104