2012-04-20 82 views
2

我知道如何在PHP和MySQL中實現,但現在我有一點思考問題。PHP和MySQL的新帖子通知

有一個論壇網站。每個用戶都可以發佈一個問題(如stackoverflow)。那麼,當用戶返回(在2天之後)他看到的一條消息(或一條消息,或者提醒......)他的線程中有新帖子時,怎麼可能這樣做呢?

你知道我的意思嗎?我不能把這一切都放到數據庫中,我認爲這有點重服務器?

謝謝。

回答

3

如果我沒有記錯,這是Simple Machines Forum如何處理它。

每個用戶都有他們點擊過的每個線程的記錄。該記錄存儲該線程在單擊時的最高消息ID。

由於消息ID是自動遞增整數,所以任何新消息的消息ID都會比前一個更大。

因此,當用戶查看線程列表時,SMF會查看線程中當前的最高消息ID是否大於存儲在用戶線程記錄中的ID。如果它更大,則會有新記錄,並且線程會獲得一個「新消息」圖標。否則,線程將獲得「無新消息圖標」。另外,如果沒有線程記錄,那麼用戶從未訪問線程,並且它會得到一個「新消息」圖標。

當用戶實際上點擊線程時,線程記錄再次用最高的消息ID更新。

+0

謝謝。但是我知道只使用id並不能真正保存,因爲在刪除條目後id可以被重用,所以日期和時間會是最好的解決方案嗎? – 2012-04-20 16:22:56

+0

@JohnBrunner,帶有一個auto_increment字段,這些id不會被重用。 – 2012-04-20 16:54:49

-2

可以把數據放到數據庫...

還有什麼地方會都已經過去了?

魔幻地?^_^

只需將其全部存儲在數據庫中,並在每行中添加某種時間元素即可。

+0

感謝您的回答;) – 2012-04-20 16:23:53

4

您應該在網站上存儲用戶的lastActiveTime。每次用戶訪問線程或頁面時,都要爲它們更新此值。下一次他們返回時,請查詢lastActiveTime之後創建的所有帖子,並顯示鏈接列表。

這意味着您只需要將一個字段添加到用戶表中,僅此而已。這個新字段包含一個簡單的日期,您可以從中確定某些帖子的新鮮度。

+0

謝謝。似乎是合法的。 – 2012-04-20 16:23:13