15

私は PHP 開発者であり、基本的にタイトルがすべてを物語っています。しかし、私が取り組んでいるプロジェクトの流れがどのように進むべきかについて混乱し始めているので、もう少し詳細な情報を期待していました.

(Web)アプリケーションの場合、Facebookが返信/コメントについてユーザーに通知し、それらを即座に表示するような機能を実装する必要があります。

私は ajax リクエストでロングポーリングを使用できると考えましたが、通知が実際には即時ではなく、リソースが重いため、これは良い解決策ではないようです。

したがって、正しく理解している場合は、何らかの形式のソケットを使用する必要があり、Node.Js は適切な選択です。そのため、最後の仮定に基づいて、ワークフローについて混乱しています。

私は2つの可能な解決策について考えました:

1) Node.Js を使用する場合、PHP の使用をまったくスキップして、Node.js のみに基づいてアプリケーションを作成できるように思えます。

2) または、PHP をベースとして使用し、Node.js のみを使用してユーザーに通知し、メッセージを即座に表示し、PHP と Mysql を使用してデータを保存することもできます。

これらの 2 つの可能性は私を混乱させ、何が「最善」で最もクリーンな方法であるかを判断できません。

私はNode.jsの経験があまりなく、しばらく遊んでいました。しかし、Node.js ではデータの管理と保存が難しいように思われるため、オプション 2 を思いつきました。

Facebook は PHP で構築されていることを知っているので、PHP 経由でデータを保存し、Node.js 経由で返信やコメントを通知/即座に表示すると想定しています。

誰かがこれについて私を助けてくれますか?

前もって感謝します!

編集: 私は気づいた、Stackoverflow は似たようなことをします。左上に通知が表示され、質問の下に「この質問に対する新しい回答」のボックスが表示されます。使用されているテクノロジーに非常に興味があります。

4

3 に答える 3

13

通知には node.js を、アプリには PHP を使用できます。グーグルで、リアルタイム通知についてこれを見つけました。node.js を socket.io とともに使用することもできますが、これは、ノードの経験がないことを述べているため、新しいテクノロジーを学ぶ必要があることを意味します。

私はそれを使用していませんが、PHP の websockets については、このプロジェクトを確認できます。

ユーザーに通知したい更新がある場合は、発行サブスクライバー パターンを使用して、この更新に関心のあるユーザーに通知できます。ギアマンも見てください。

個人的には、node.js+socket.ioを使用してredis の pubsub メカニズムを使用して通知システムを構築しました。レコードが更新されるたびに、適切なチャネルで公開されます。チャネルにリスナーがいる場合は、通知されます。また、最新の 20 件の通知を Redis リストに保存します。

アプリケーションは PHP で構築されています。通知システムは node.js に組み込まれています。これらは、同じデータを参照する異なるアプリケーションです。通信はredis経由で行われます。たとえば、Facebook のコンテキストでは: 1) ユーザーが自分のステータスを更新します。2) PHP はこれをデータベースと Redis に保存します。 3) Redis は、この更新を特定のユーザーのステータス チャネルに公開する必要があることを認識しており、公開します。4) 特定のユーザーのすべての友達が彼のステータス チャネルをリッスンしています (ここに node.js が来ます) 5) Node.js は socket.io を使用してブラウザに通知をプッシュします

Facebook に関しては、古いブラウザーをサポートするためにロング ポーリングを使用している記事を読みました。これについてはわかりませんが、引用が必要です...

于 2013-01-30T10:46:27.923 に答える
1

私の知る限り、それは2つの簡単な方法によるものです:

  1. 最初の非常に単純な方法は、通知されたかどうかを判断するブール列を各レコードに追加することです。

  2. 2 番目の方法は、すべての通知を挿入するテーブルを作成することです。

ただし、パフォーマンスを向上させるための代替方法があるかどうかはわかりませんが、最初の方法は、私自身が一般的に行っている方法です。しかし、Facebookは2番目の方法を使用していると思います.1つ1つを多くのユーザーに通知する必要があるからです。

あなたの質問は次の重複かもしれません:
Facebook のような通知追跡 (DB 設計)
ユーザーへの通知を保存するためのデータベース設計

于 2013-01-30T10:31:28.287 に答える
0

サーバーサイドイベントを使用できますが、JavaScript が少し必要ですが、過度に複雑なことはないと思います。

ただし、このメソッドの主な部分は PHP であるため、PHP を使用して DB に通知を照会するだけで、SSE が通知をユーザーにプッシュします。

ただし、いくつかの制限があります。最も顕著なのは、IE でサポートされていないことです (大きな驚きです) 他の可能性を知らせるためにとにかく言及したいと思います。

お役に立てれば

于 2013-01-30T10:56:08.250 に答える