2012-02-12 12 views
1

私は入札システムを作成して、ユーザーが商品の現在の価格を確認できるようにしたいと考えています。他の場所の他のユーザーが私の前に入札を行った場合は、ブラウザで自動的に入札を更新する必要があります。自動更新入札 - PHP/Ajax

私はJS + Ajaxの自動更新機能について読んだことがありますが、ユーザーのブラウザのコンテンツを自動更新するために5秒タイマーを設定しても、5秒ごとにajax呼び出しを行うことでサーバーに負荷がかかりません。その入札システムでは、ユーザーは1-2秒以内に更新を行うため、1〜2秒ごとに自動更新ajaxを呼び出すと、サーバーに負担がかかります。

だから私はこのタイプのものを扱うためのより良い方法があるのだろうか? Twitter/Facebookはユーザーのフィードをどのように更新しますか?

+1

この回答を見る - http://stackoverflow.com/a/7132828/295508サーバーのプッシュ方法や何らかの種類のWebソケットシステムが役に立つはず – JohnP

答えて

3

AJAXであるかどうかにかかわらず、人々は最新の入札情報を確認するためにページを更新し続けるため、入札システムは常に高い要求をします。

見て試すことができますlong polling長いポーリングは、ブラウザーのHTTP要求に応答してサーバーからブラウザーにデータを「プッシュ」する方法です。これは通常のHTTP接続です。これにより、ユーザーからサーバーに送信される要求の数が減少する可能性がありますが、ユーザーとサーバーの間には多くのオープンでアクティブな接続があります。

1

長いポーリングを見たいと思うでしょう。本質的には、これはあなたがイベントメカニズムのいくつかの並べ替え(PHPとなしprobem)を必要とするサーバーで

  • をどのように動作するかである
  • クライアント(ブラウザ)が入札項目に
  • サーバーのチェックを参照するAJAX要求を開始入札が変化した場合には、その要求を返します。
  • もしそうでなければ、彼はこの入札に関連するイベントを待って、この入札に関するイベントを待ちます。
  • このようなイベントが発生した場合、情報があれば、彼は "入札なし"の情報でリクエストを返します。
1

あなたはストリーミングモデルで逃げることができるかもしれない...

各JSクライアントは、一度サーバーに接続し、オープンconnecitonを保持します。新しいイベントがサーバーに到着すると、リアルタイムで開いているすべての接続にブロードキャストされます。

これはtwitterがtweetをブロードキャストするために使用するメカニズムに似ています。

+0

私のサンプルをどこにでも表示できますか?任意のサンプルスクリプト? –

+0

このhttp://ajaxpatterns.org/HTTP_Streaming#Solutionをご覧ください – Basic