2010-02-17 71 views
0

我已經使用PostgreSQL在PHP中編寫了一個簡單的論壇。該論壇由若干包含主題的子論壇(或類別,如果您喜歡)組成。我有一張表,用於存儲用戶上次訪問主題的時間。這是這樣的:user_id,topic_id,時間戳。如何顯示未讀的子文件?

通過比較上次主題答覆的時間戳和上次用戶訪問的時間戳,我可以輕鬆確定哪些主題應該標記爲未讀。

我的問題是:我該如何有效地確定哪些子論壇(類別)應標記爲未讀?我所想到的是:每當用戶訪問一個主題時,更新訪問時間戳並檢查當前子論壇中的所有主題是已讀還是未讀。如果全部閱讀,請將該子論壇標記爲已閱讀。否則,將其標記爲未讀。但我認爲必須有另一種方式。

預先感謝您。

回答

1

有很多種方法(像你這樣)來實現類似的行爲,因爲你提到的效率,我會考慮性能是非常重要的。

我處理這之前並沒有涉及到數據庫,以照顧的未讀內容在一路。考慮到這一點,我的建議是:

  1. 在第一次訪問標記唯一主題不是新的,比方說,3天爲「未讀」
  2. 當用戶瀏覽的主題,開始扔話題ID和線程的最後更新到客戶端的Cookie
  3. 當論壇頁面加載時,請檢查cookie,如果線程已經遭遇任何更新,則可以使用純javascript輕鬆完成此代碼以及Cookie處理。
  4. 如果客戶是整整一個星期從網站,沒有任何問題,他會看到的一切都超過3天(第一次訪問規則)爲未讀新。

p.s .:這與100%關係到一個人知道他沒有閱讀的重要性。在我的建議,這是不是至關重要的,因爲它不是100%可靠的(我們不使用數據庫/合適的持久性畢竟)

+0

這是一個有趣的方法,但我不喜歡靠上的Cookie或JavaScript客戶端。而且,正如你所提到的那樣,這並不是持久的。 – liviucmg 2010-02-18 00:52:00

+0

沒有問題,您也可以在數據庫中複製此行爲,如果有幫助的話。 – 2010-02-18 01:24:40