2010-12-01 21 views
2

私は、jQueryを使用してPHPファイルに投稿するオフィススケジューリングプログラムを作成しました。このプログラムは、pgSQLデータベースに予定を挿入します。これはまだ起こっていませんが、私は将来この問題を予見できます - 2人のオフィスワーカーが同時に同じスロットに予定を立てようとすると、競合状態が発生し、1組の顧客データが失われます。私はログからそれを掘る必要があります。私はサーバー接続を制御する何らかの種類のゲートキーパープログラムを作成する必要がある場合や、mutex/lock/semaphoreがjavascript/php /と一緒に使用できる場合、データベースに設定できるフラグがあるかどうか疑問に思っていました。 sqlを使用して、この競合状態の発生を防ぎます。Ajax/JQueryデータベースへのアクセス/ mutex

答えて

3

データベースフラグを使用してロックすることもできます。まれにしか発生しないため、衝突を検出することがより効果的です。

問題を検出するには、最後に更新された時刻を含むデータベースからタイムスタンプを保存します。これをフォームとともに送信し、レコードを更新する前にタイムスタンプを比較してください。タイムスタンプが変更されている場合は、ユーザーにすべてのデータを提示し、何をしたいか尋ねます。これにより、2番目の保存ユーザーが以前に保存したデータに基づいて変更内容を変更することができます。

この問題を解決するには他にも方法がありますが、適切な解決方法は特定の問題の性質によって異なります。

+0

タイムスタンプのアイデアをありがとう!現在のカレンダーの上に簡単に実装できます。病気になったら、それをどのように更新するか試してみてください。 – busbina

関連する問題