2013-01-11 22 views
6

リアルタイム価格変更システムを使用して、競合他社価格と当社の製品価格との差異を確認したいと考えています。プッシュ通知システムを実装する最良の方法

JavascriptとPHPによるプッシュ通知/ COMETシステムに関する経験はありません。あなたが気にしないなら、私はこのテクニックについてのあなたの経験、示唆を得たいと思います。ここに私の質問があります:

  • そのようなシステムをやっている最善の方法は何ですか?
  • 私たちは経験豊富なPHP開発者ですので、PHPはこのタスクに適していますか?
  • これを行うことができるプロジェクトまたはソリューション(オープンソースまたは商用)が分かっている場合は、分かち合うことができますか?
+1

IEの古いバージョンや、最新の技術で使用できる実際の最良の方法など、あらゆるブラウザで動作するソリューションをお探しですか? –

+0

それは問題ではありませんが、本社で使用するブラウザであれば問題ありません。 –

答えて

2
  1. ここでは、私たちが使用するアプローチがあります。 JavascriptはAJAXリクエストをPHPファイルに送信します。 PHPファイルはデータベースのクエリを行い、見つかった場合は0.5秒間(または1秒間)スリープした後、再度データベースクエリを実行します。 30秒が経過してまだデータベースに新しいものが見つからない場合(これは、HTTPタイムアウトが発生する前に出力を出すために必要です)、何かを出力します。 Javascriptは最後のクエリからの出力を受け取った直後に別のクエリを開始します。 Javascriptは、彗星が監視しているデータベーステーブルの最後のIDを常に記録しています。これは、私たちが見た最後のIDより大きいデータベース行だけを照会するために使用されます。
  2. はいPHPが適切です。重要なことを覚えておいてください! cometループに入る前に開いているセッションをすべて終了する必要があります。 PHPはセッションロックを使用して、同じセッションに同時に2つのスレッドが書き込まれないようにします。セッションを閉じることを忘れた場合、他のスレッドはすべてロックされます(ウェブサイトを介した閲覧は不可能です)。
  3. 私が使用しているオープンソースのPHPフレームワークにアドバイスできます。それはStingleと呼ばれています。それは固体と生産準備ができているCometプラグインを持っています。
+1

これはAJAXポーリングの説明です。しかし、それは彗星の傘の下にはないので、それは彗星の解決策ではありません。 – leggetter

1

socket.ioを使用しようとすると、クライアントからサーバーにデータを取得する要求を送信する必要はありません。サーバー側ではソケットを使用してデータを送信し、クライアントはデータを取得します。 通知がほとんどリアルタイムであるので、通知用のmake httpリクエストを避けてください。

関連する問題