-2

PHPページが表示されたら、MySQLテーブルの列に入力された最後の値を検索するスレッドを開始して、テキスト入力フィールドの値がこの最後の値に1ずつ増加するようにします(これは数値です)。ページが長時間表示される可能性があり、その間に列が何度も更新される可能性があるため、スレッドが必要です。そのため、時間間隔の各期間の値を取得したいと思います。送信ボタンをクリックすると、値は列の最後の値になります。それは可能ですか?


このシナリオを考えてみましょう:

1人のユーザーがページを表示するため、フィールドには増分値が含まれます。次に、別のユーザーが同じページを表示するため、フィールドには同じ増分値も含まれます。フォームを送信すると、同じ増分データを送信するため、同時実行の問題が発生します。では、その状況をどのように解決するのでしょうか?

4

2 に答える 2

3

1人のユーザーがページを表示するため、フィールドには増分値が含まれます。次に、別のユーザーが同じページを表示するため、フィールドには同じ増分値も含まれます。フォームを送信すると、同じ増分データを送信するため、同時実行の問題が発生します。では、その状況をどのように解決するのでしょうか?

可能な限り最高の値への変更をリアルタイムで把握することはできません。定期的に値をフェッチするAjaxベースのソリューションは、十分な速度と信頼性がありません。リクエストがサーバーに到達するまでにかかる100ミリ秒で最大値が変化した場合はどうなりますか?ユーザーのネットワーク接続が一時的にダウンしている場合、ユーザーは[保存]をクリックし、2つの値が互いに上書きしてしまう場合はどうなりますか?

通常の解決策は、ユーザーインターフェイスではなく、データベースにレコードを保存するときに最大値を決定することです。この効果を自動的に実現する方法は、データベースの自動増分フィールドを使用することです。

どうしても現在の値をユーザーに表示する必要がある場合は、何らかのロックメカニズムを採用する必要があります。つまり。現在の最大値を決定し、レコードを保存するかページを離れるまで、現在のユーザーのためにその値を予約します。しかし、100%信頼できる方法ですべてのユーザーに現在の最高値を表示する方法はありません。この方法で衝突が発生します。@NBがコメントで言っているように、おそらくあなたはあなたのデザインを再考するべきです。

于 2012-07-11T14:32:29.523 に答える
0

これは、たとえば1分ごとにデータベースまたはコントローラーを非同期に呼び出して(または特定のマウスイベントで)、JSONデータまたは表示されたデータを含むビューを返すことで、AJAXを介して簡単に実現できます。多くの人気のソーシャルネットワークサイトは、ホームページに表示される最新のフィード/データを取得するためにこれを行います。

詳細情報:http ://ajaxpatterns.org/Periodic_Refresh

于 2012-07-11T14:30:14.450 に答える