メッセージと通知機能を備えたソーシャル ネットワークを運営しています。ユーザーがメッセージを送信するか、別のユーザーに通知を送信するたびに、メッセージまたは通知に関する詳細を含む行がテーブル news_updates に挿入され、すべての友人が news_seen テーブルに挿入されます。(メッセージが読み取られるか、通知に関連するアイテムが開かれると、見たものが 1 に設定され、ajax 要求のコールバック関数の最後でこれを実行します。現在開いているニュース項目で、すべての newsitem_ids を含む大きな挿入を行っています)。
news_seen:
newsitem_id bigint,
user_id big int,
seen int DEFAULT '0'
現時点では、news_updates JOIN news_seen でニュースを確認するために、3 秒ごとに ajax リクエストを実行しています。
これは、ますます多くのユーザーを獲得しているため、サーバーの負荷が非常に大きいことがわかりました。xmpp などについてよく読んでいて、プッシュ通知サービスが私のサイトに最適だと思います。
唯一のことは、非常に多くのオプションがあるため、どの方法に進むかを実際に決めることができないということです.
また、独自のシステムを作成することも考えました。私はこのようにする予定です:
初期登録時にユーザーごとに xml ファイルを作成します (そして、既に登録されているユーザーに対してバッチを実行します)。
ユーザーがニュースの更新を送信したら (データベースに書き込むための独自の php 関数があります)、それぞれの友人の xml ファイルを操作する小さなコマンドを含めます。
3 秒の ajax リクエストを実行する代わりに、jquery ストリームを使用して xml ファイルへの長い接続を確立し、最後のリクエスト以降に変更が加えられた場合は、データベースからデータをポーリングする通常の ajax リクエストを実行します。
Ajax リクエスト内で check_seen を実行する代わりに、すべての新しいアイテムをグローバル配列に挿入し、リスト内のアイテムが現在表示されているかどうかをテストする間隔関数で使用します。
これは良い考えだと思いますか?