6

定期的にチェックするのではなく、データをページにプッシュする方法はありますか?

もちろん、ajaxを使用して定期的にチェックできますが、phpスクリプトの実行時にページを強制的にリロードする方法はありますか?

理論的には、ajax関数が実行されることになっているときだけテーブルを用意することでajaxリクエストの速度を向上させることができます(ajax関数がデータベースから新しいデータを取得する必要があるときにテーブルの値を更新します)が、これにはかなりの量のメモリが必要ですmysql接続と、更新がない場合やデータベースデータを取得するajax関数を実行したくない場合でもクエリが実行されるまでの待機時間。

これをデータベースにクエリして「更新された場合」のデータを格納するテーブルをチェックするよりもさらに効率的にする方法、またはajax関数に別のページから実行するように指示する方法はありますか?

node.jsまたはHTML5webSocketも実行可能なソリューションになると思いますか?

または、「更新された場合」のデータをテキストファイルに保存できますか?どんな提案でも大歓迎です。

4

4 に答える 4

2

基本的に、サーバー側のイベントをクライアント (ブラウザ) に通知することについて話しているのです。それは実際には次の 2 つのことに帰着します。

  1. どのWebサーバーを使用していますか? (特定の言語に限定されていますか?)
  2. どのブラウザをサポートする必要がありますか?

あなたの最善の選択肢は、WebSocketsを使用して仕事をすることです。それでも、多くの「ハック」は問題なく機能します。CometまたはAJAX long pollingを試すことをお勧めします。

使用している Web サーバーに適したソリューションを提供し、ユーザーのブラウザーに応じて最適なオプションを自動的に選択するAtmosphere (およびその他のプロジェクト) というプロジェクトがあります。

ブラウザーに制限されておらず、Web スタックを選択できる場合は、SocketIO + nodejsを使用することをお勧めします。それは今の私の好みにすぎませ. アプリケーション全体が nodejs に適していない場合があるため、データ操作をノード js だけにオフロードします。

幸運を。

于 2012-07-09T17:20:49.567 に答える
2

別の可能性として、データを単純な形式でファイルに保存できる場合は、ファイルをデータで更新し、Web サーバーを使用してそのタイムスタンプを確認します。

次に、ブラウザは HEAD リクエストを作成してポーリングできます。これにより、ファイルの更新時間がチェックされ、更新されたコピーが必要かどうかが確認されます。

これにより、データを変更しないものに対して DB 呼び出しを行うことが回避されますが、重要なリソースのファイル システム コピーを保持するという犠牲が伴います。ただし、アクティブなデータに対してこれを実行し、しばらくしてからロールオフできる場合は、良いトレードオフになる可能性があります。データを更新する呼び出しでこれを変更できるようにする必要があります。

同じデータの複数のコピーを持つシステムの同期リスクを共有しますが、強化された応答性がリスクに見合う価値があるかどうかを調査する価値があるかもしれません.

于 2012-07-09T17:28:22.530 に答える
1

以前は、Web サーバー プロセスを待機させてスクリプトからの出力を待機させ、それが表示されたときにクライアントに転送する「サーバー プッシュ」と呼ばれるテクノロジがありました。これは 1995 年のホットな新技術であり、おそらく今でも実行できますが、非常に恐ろしいアイデアであるため、誰も実行しません。

ええ、できますが、そこに着いたら、そうしなければよかったと思うでしょう。

于 2012-07-09T17:15:27.570 に答える
0

HTML5 Sockets を使用することもできます (またはする予定です)。

このページには、このテクノロジーに関する素晴らしい情報がいくつかあります。

http://www.html5rocks.com/en/tutorials/websockets/basics/

于 2012-07-09T17:14:14.430 に答える