2012-03-30 20 views
0

たとえば、私のシステムでは、ユーザーがリストを作成し、リストに情報を追加することができます。名前、住所、電話... データの並行処理方法は?

し、リストを作成した後

は、それがデータベースに挿入され、ページ内の管理者は、管理者リストユーザーがリストを編集するときに問題がある

を削除することができますリストを削除したら、どうなりますか?

唯一の方法は、データベースに編集依頼を行う前にデータベースを再度確認することです。しかし、フォームの数が多い場合、入力が多い場合、各フィールドをどのようにチェックすることができますか、並行しているすべてのフィールドをチェックする必要があります。行が、それは主キー(ID)です使用して、対応するテーブルに存在する場合、私は、クエリ
のためのPHP、MySQLとPDOを使用しています

+0

編集ありがとうございました –

+0

"リスト"とは何ですか?行のセット?いくつかのフィールドを持つ1つの行?リストに有効な値を定義する他のテーブルはありますか?あなたはリストをどのように編集するのですか?それをメモリにロードし、変更して単一のトランザクションで保存するか、負荷を分けて別々のトランザクションに保存しますか? DELETE/INSERTするか、変更されたデータを更新しますか? –

答えて

0

をいただき、ありがとうございますさて、なぜあなたは、単にチェックしていないでしょうか?

0

基本的に、そのような状況は避けられません。ユーザーがフォームを編集している間、ユーザーはフォームが削除されたかどうかを知ることができません。

一度解決するには、ユーザーが同時に編集/編集を禁止するレコードの編集を開始する必要があります。ユーザーがフォームを送信すると、フラグは元の値に戻って、他のユーザー/管理者がそれらのレコードを編集/削除できるようになります。

レコードがまだ残っている場合でも、ユーザーのページでajaxを使用してサービスとチェックを随時行う2番目の方法がありますが、多くの入力がある場合は実装するのが面倒です。

基本的に、トランザクションに似た何かを作成する必要があります。編集中のレコードをロックします。あなたがロックされたレコードの多くで終わることができるので、非常に気にしてください。ユーザーが「トランザクション」を確定する必要がある時間を実装する必要があります。その時間を超えてロックされたレコードがある場合は、それらを自動的にロック解除します。また、元の問題と同じ状態になるので、ユーザーがその時間を超え、その状況を処理する必要があるという事実にも注意してください。

PS:情報が失われるため、ユーザーが編集中に編集した情報にも注意する必要があります。編集部分については、私は編集後の状態で編集する前に状態をチェックするためのハッシング手法をとると思います。この時点から、何をすべきかを決めるのはあなた次第です。

+0

フラグはデータベースにありますか?変更する前に1に設定されていますか? –

関連する問題