2017-08-22 5 views
3

私のウェブサイトのユーザーのための通知システムを構築する必要があります。 各ユーザーはいくつかのトピックに従っているので、トピックに関する記事を投稿すると、このトピックに続く各ユーザーは通知を受け取る必要があります。効率的な通知システムを構築するにはどうすればよいですか?

私は各ユーザーの通知の最後の開封日を取得し、この日以降にすべての投稿を公開してから、各ユーザーの通知テーブルに保存します。

---------------  --------------------------------------- 
| new_post | |    USERS     | 
---------------  --------------------------------------- 
| id | post | |ud_usr |last_notif_opening(datestamp)| 
---------------  --------------------------------------- 
| 1 string | | 1 | 2017-08-21 10:10:10  | 

と、実際にはそれぞれ私は新しい投稿のIDを格納しているので、次にそれらのテーブルのレコードを取得してから、idカラムの関係でテキストを取得します。

-notification_user1 
-notification_user2 
-notification_user3 

私は、cronジョブが他のユーザの通知をchekingされているので、多分、ユーザが適切なタイミングで彼の通知を受け取ることができないので、それは、良い解決策はないと思います。

あなたは私にこのよりよい解決策を見つけるのを手伝ってもらえますか?

+0

私はこのためにウェブソケットを使用することをお勧めします –

+0

どういう意味ですか? – gattass69

+0

それはあなたの必要性ではありませんが、あなたは[https://notiflare.io](https://notiflare.io?utm_source=stack_overflow&utm_campaign=how-to-build-an-efficient-notification-system)を見ることができます。これは、通知システムを使用する準備が整いました。それはあなたの問題のより簡単な代替案(他の人が同じである場合)です:D – jeremieca

答えて

1

を使用することができますがnodeJs

です

PHPでは、Laravelのようなフレームワークを使用する場合、Laravelフレームワーク内に強力な通知コンポーネントがありますが、純粋なPHPや他のPHPフレームワークを使用する場合、最も効果的なアプローチはPHPでWebSocketを利用することです。

WebSocketを使用する場合は、2つのピア間の通信を処理するWebSocketサーバーが必要です。この分野の質問については、正確に説明してください。 あなたが探しているものは何らかの種類のチャンネルです。ユーザーはチャンネルでチャンネル登録し、チャンネルに通知をプッシュして、プッシュされたメッセージやデータを受信できるようにします。 PHPでこの種の機能を実装する は難しい作業ではありません、あなたは機能の下に使用する必要があります。

  1. Ratchet:PHPのWebSocketライブラリも、それは簡単に
  2. Thruwayウェブソケットサーバーを作成する機能があります:PHPライブラリに書かれましたWAMP(Webアプリケーションメッセージングプロトコル)をサポートするこのライブラリが必要なチャネルを作成する場合は、ラチェットの上部バージョン2
  3. AutobahnJs:WAMPを使用してチャネルを作成するためのクライアントサイドコードを処理する。

上記の機能は、PHPのWebソケットとチャネルで作業するために必要な機能です。それがあなたを助けることを願って

+0

autobahnJSのリンクはhttps:// githubです。com/crossbario/autobahn-js –

+0

WebSocketとWebSocketを使ってPHPで学習を始めることができます。そのラチェット/ Wampコンポーネントの後にラチェットを実行してから、autobahnJsを使用してthruwayの使用を学習しましょう –

+0

wampのトピックを正確に説明しましょうチャンネルと彼らはちょうど命名法で異なる同じアプローチです –

0

あなたが使用するために利用できるように多くの技術があり、ウェブ上で最も使用されている1は、現在かもしれリアルタイムWebアプリケーションについて、あなたはリアルタイムのソリューションを使用する必要がありますreal time notificationまたはfollow these steps I used in the past.

関連する問題