2011-07-04 10 views
1

Facebookと似たようなWebサイトを作成しています。通知の仕組みを実際にどのように確認するのか分かりません。さて、私はどのようにクエリを使ってデータベースからそれらを得ることができるかを考え出しました。モデルPHP/Ajax通知システム?

私はこのサイトに従うと考えている構造は、さまざまなアプリケーションのための複数のテーブルであると考えられます。つまり、写真は画像のID、ファイル名、および「タグ付け」されたものなどいくつかのユーザーIDを追加します。その情報をリアルタイムでユーザーに送りなさい。

私は、数秒ごとにいくつかのクエリを実行して、未読のステータスを持つすべてのアプリケーションテーブルにあるユーザーの$ _SESSION ['id']のデータベーステーブルをスキャンする必要がありますか?

また、すべてのユーザーが独自のテーブルを持っている可能性がありますか?それは多いです。笑。

最新の通知が一意のIDとユーザーIDでテーブルにプッシュされている通知テーブルのみですか?

私は本当にこの周りに私の頭をラップすることはできません、笑。

また、リアルタイムで通知を表示しますか?私はFacebookが長いポーリングを使用してリアルタイムで通知を受け取ることを理解していますが、複数のクライアントのために長いポーリングで実行されている約5〜10個のクエリ(各アプリごと)を残すことはできません。サーバー?

ソーシャルネットワーキングサイトの通知システムをどのように試してみることができるかに関するアドバイス/コードはありますか?もしそうでなければ、私はリアルタイムのどんな種類でもなく静的な通知で行くと思う。

もう一度、それはすべてのページの負荷で新しい通知のために数秒ごとにサーバーに照会する負荷が大きすぎますか? ajaxを使用すると、長いポーリングを意味するので、負けてしまいます。

答えて

1

ロングポーリングが答えです。 GmailとFacebookの両方がこの方法をリアルタイム通知に使用しています。唯一の他の選択肢は、データサービスを使用するFlexですが、これはPHPではありません。

パフォーマンスに関しては、一度に0-5の通知のみを取得し、テーブルが適切にインデックスされ、クエリが正常に書き込まれた場合、これらのクエリのうち5つは重要ではありませんあなたのサーバーへの影響。

さらに、GmailとFacebookがそれをやっているなら、あなたもこれを行うことができます。確かに、彼らはすべてのユーザーをサポートするために大量のサーバーを持っていますが、私は一歩一歩を踏み出してしまいます。その結果、サーバー技術は今のところうまくいくでしょう。そして、現在のサーバーが負荷を処理できないほど多くのユーザーを獲得すると、より強力な新しいサーバーに投資します。

1

よくここに私のそれがあります。

ステータス、写真、ビデオ用に異なるテーブルを作成することができます。 誰かがビデオや何かにコメントするたびに、その通知を気に入ったユーザーの情報とともに通知を保存するためのクエリを実行できます。ステータスフィールドも設定する必要があります。ユーザーが見ていない。 写真やステータスのあるページのURLを置くことができます。ユーザーが5分ごとにクエリを実行して未読の通知がないかどうかを確認します。左の小さなトーストメッセージfacebookのような画面の下側。

トーストメッセージをクリックすると、notifcationのステータスを更新するためにajaxコールを実行して、再び表示されないようにすることができます。また、成功したコールバックでは、ステータス更新です。

関連する問題