2009-08-24 3 views
35

PHPを使って、彗星のテクニックの良い例を教えてもらえますか?PHPとjqueryを使ったシンプルな彗星の例

永続的なHTTP接続などを使用する例が必要です。私はポーリング技術を使用したくないのです。なぜなら、私はそのような設定をしているだけでなく、リソースを大量に使いこなして管理することが難しいからです。また、私はIIS7ではなくApacheを使用しています。

私はこの醜いポーリング技術から進めることができるので、良い例が本当に役立つでしょう。

+0

getclicky.comように見えますポーリング方法を使用するとかなり成功しました –

答えて

2

このテクニックを使用してトピックのWikipedia articleを勉強したことはありませんでしたが、「ロングポーリング」は実行可能な唯一の解決策のようです。サーバー上のスクリプトを無限にループしたりスリープさせたりすることで実装するのは簡単です。ウィキペディアの記事からリンクされているHTTP Streaming pageにはactual codeがあります。

これを試しましたか特定の問題が発生しましたか?

1

このarticleを見ることができます。これは、彗星プログラミングの概念を理解する上でとても良いスタートです。

2つの例があります。最初のものはiframeテクニックを使用し、2つ目は永続的な接続を使用します。

14

あなたは、ポーリングを使用する、または特別良いJSバックエンドで、長い要求とCOMETのために考案されたWebサーバーを使用する必要があります。

function listen() { 
    $.get("/mylongrequestfile", {}, function(data) { 
     $("#mydiv").html(data); 
     listen(); // then launch again 
    })); 
}; 

はCOMETは、データリターンがあるかどう、データを待つ」であることを忘れないでくださいJSバックエンドはデータを解析し、サーバーに問い合わせるプロセスを再起動する必要があります。サーバ側の問題やユーザ側からだけ断線がある場合、プロセス全体が破壊される。この例では

、(要求が成功した場合関数のみ呼ばれる)

+2

+1素晴らしいコードですが、リクエストの間にこのスリープをすることをお勧めしますか? –

+1

サーバ自体が 'sleep'効果を出さなければならないので、サーバは応答を出す前にそれらのいずれかが起こるまで待ちます(1-新しいデータが見つかりました、2-要求がタイムアウトしました) – MhdSyrwan

0

IISについては、ありますWebSync。 PHPを使用しているので、WebSync On-Demandを使うほうが良いでしょう。いずれにしても、あなたが探しているサーバープッシュを提供し、使いやすいです。 this questio nもチェックしてください。これは基本的にはあなたの後です。

a simple example of WebSync On-Demand in actionここではなしスクリプト言語を使用しています。 2つのウィンドウを開き、公開/購読を実際に見てください。

サーバーから公開するには、PHP apiを使用できます。

6

チェックこのアウト:How to implement COMET with PHP
これはJQueryを使用していません。これはPHPとPrototypeを使って作られています。それは非常に理解しやすいです。これを見てから簡単にJQueryスクリプトを作れると思います。

2

はロングポーリング(彗星)を実装するため、このデモビデオをチェック鑑賞することをお勧めいたします。.. それはあなたのすべて

を助けるかもしれない

http://www.screenr.com/SNH