4

例: サイトの説明:


  1. 2 つの特権管理者 SA1 SA2
  2. 管理者側にログインすると、ダッシュボードに更新ボタンが表示されます。

必要


SA1 が [更新] ボタンをクリックすると、タスクを完了するのに 15 分かかります。プロセスが進行中であることを考慮してください。SA2 がログインすると、SA1 が更新ボタンをクリックしたことを SA1 が認識し、終了しない限り、SA2 はクリックできなくなります。それ。


私がしたこと


テーブル 'button_status' [id, status('complete','incomplete')] を作成 SA1 または SA2 が更新ボタンをクリックするたびに、ステータスが「未完了」の値の新しいレコードを挿入し、ロード中のプロセスが進行中であることを示すまで画像を表示し、SA1 と SA2 の両方の更新ボタンを無効にしました。プロセスが 10 分後に終了したら、最後のレコードのステータスを「完了」に更新しています。読み込み中の画像を削除し、更新ボタンを有効にします。
すべてが正常に機能しています。問題は、更新ボタンをクリックしなかった他の管理者の画像または無効化されたボタンの読み込みです。ページを更新する必要があるため、削除できません。「完了」後にページを更新せずに、他の管理者がいつでも自動的に完了したことを表示する方法はありますか

4

1 に答える 1

1

まっすぐにする方法は3つあります。

AJAX コメット

これには、クライアントがサーバー上のイベントに応答するクライアント サーバー実装が含まれます。AJAX コメットの詳細。私が使用したソリューションの 1 つはmeteor serverです。セットアップは比較的簡単でしたが、独自の方法で構成するにはサーバーにアクセスする必要があります。廃盤になりましたが。

長所

  • 変更がある場合にのみページを更新します。したがって、サーバーの負荷を軽減します。
  • 遅延がほとんどまたはまったくない

短所

  • サーバークライアントの構成
  • 時間のかかる実装

時限ポーリング

一定期間に 1 回、サーバーをポーリングして変更を確認できます。ロックされたレコードを JSON または XML で返すようカスタム スクリプトに要求します。それに基づいて、ボタンのステータスを JavaScript で更新します。X分/秒ごとにAJAXデータをリロードする、 jQuery

長所

  • 簡単で迅速な実装

短所

  • サーバーに追加の負荷を追加します
  • まだいくらかの遅延があります

そのままにしておく

それが管理インターフェースであり、すでにロックされているレコードをクリックすることへの不満が大したことではない場合は、そのままにしておきます。

もう1つ

ライブ データ アプリケーションの興味深いソリューションhttp://meteor.com/、そのSO タグを見つけましたが、現在は mongodb サポートしかありません。

于 2013-06-12T07:56:52.370 に答える