2013-02-01 32 views
1

我的工作頁面上的文章。我們可以對每篇文章進行投票。我想在不同的頁面上顯示所有文章和高於平均水平的投票文章。我目前的情況是這樣的:保持變量PHP的狀態,而無需查詢

//For get all articles 
GET ALL RECORDS FROM ARTICLES TABLE 

//For above average articles 
GET ALL RECORDS WITH VOTE ABOVE 
    GET AVERAGE VOTE VALUE FROM ARTICLES TABLE 
FROM ARTICLES TABLE 

我發現非常低效。有哪些變化平均投票兩個事件:

  • 有人表決的文章
  • 有人寫了一篇文章

有什麼辦法,我可以跟蹤平均投票值,而不在每次請求查詢數據庫?我想我必須保存已經發送了多少票以及寫了多少文章的狀態。我應該用檔案寫下這兩個增值稅,這是否安全?

+0

我會保持一個總和,並在兩個單獨的列作爲denormalisation步數;那麼平均數是微不足道的。 –

回答

1

只需使用你的數據庫如預期,這是有效,因爲你會得到什麼。如果你想減少對超過使用緩存(Choosing a PHP caching technique: output caching into files vs. opcode caching)數據庫流量,不重新設計一些作品,並添加不必要的複雜性。

PHP不具有的請求之間持久的靜態變量,這使得一個明顯的/簡單的解決問題的方法(你真的沒有問題,但是你認爲低效率)是不可能的。變量序列化到一個文件,並具有讀取該文件的每個請求是不是要走的路,文件系統IO是最有效的結構。