簡體   English   中英

通知和PHP + MySQL設計

[英]Notification and PHP+MySQL design

我正在制作一個具有帖子和回復系統的網站。

我想做的是,當有人回復時,向曾經回復(或參與)帖子的人發送通知。

我的想法是創建一個名為Notification的表,其中包含message和已seen (已看到/未讀)字段。 人們回復后,INSERT記錄到Notification表中。

這似乎很容易而且很直觀,但是例如,如果涉及到很多人,例如第31位用戶的回復,那么曾經回答過的30個人將收到通知。 這將產生30行SQL記錄。 而第32位用戶將記錄31條記錄。 然后,總行數將變為30+31=61

我的問題是

  1. 這是處理通知系統的好方法嗎?
  2. 如果是這樣,如何處理重復的通知(尚未看到但有新回復)
  3. 如上所述,這會增加服務器負載嗎?

非常感謝。

我正在創建類似的系統。 這是我的經驗:

  1. 我的通知表如下所示:id(int)| user_id(int)| post_id(int)| last_visited(日期時間)。

  2. user_id + post_id是唯一的 復合索引

  3. 因此,當用戶打開頁面時,我正在數據庫中尋找條目(user_id + post_id)。 如果找到它,那么如果找不到,我將更新last_visited字段,然后創建新行。

  4. 當我需要列表消息進行通知時,我只查詢在last_visited時間之后創建的所有消息。

  5. 我也有cron sript為關閉的帖子或被禁止的用戶提供干凈的通知。

至於您的問題:

1和2:您必須在要存儲的數據量和站點性能之間找到平衡。 如果您不需要存儲所有這些數據,可以按照我的方式進行。 如果需要此數據,則更好。

3:這取決於訪問者的數量和其他功能。 但是這里有一些建議。 您必須為MySql表使用索引以獲得更好的性能。 另外,您還應該考慮將刪除無用的通知的cron腳本。 如果每天有大量訪問者超過70萬,則應該考慮MogoDb或其他高性能noSql數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM