2013-11-26 60 views
0

我意識到有很多方法可以做到這一點,所以在開始之前,我想要一些具有此類任務經驗的人的輸入。最佳實踐:過去30天中的瀏覽次數/點擊次數

我有一個MySQL表的下載量爲1000。每次下載都有一個包含總下載次數的圓圈。

我想要做的是使其更具動態性,因此將此數字轉換爲最近30天的下載次數。

所以我基本上想到了在過去的30天裏,每個下載ID和30個下載數據的列表都會創建一個新表格。把它們放在一起由PHP下降。或者我可以使用前面表格中的「數據添加」字段,並將下載總數除以給定下載的在線日數。

如果不是完全不同的解決方案,你會推薦什麼解決方案?

回答

2

這確實取決於您的具體要求和系統負載。

你剛剛需要上個月的結果嗎?運行一個cronjob,每月重置一次這個值。如果你需要一個平均值(總是過去30天),你的mysql方法肯定會起作用,但是30個字段可能有點矯枉過正。

兩種解決方案:

  1. 具有每立即下載3個字段:今天的計數器,含有 30元件JSON數組斑點,和今天的30天平均數。正常(在午夜)Cronjob 可以將日常計數器 中的數據移至陣列,刪除最早的條目並更新平均值。這樣,在操作時間內,您的系統負載就會降至最低。

  2. 像Redis一樣使用NoSQL和日常計數器,並給每個人一個 超時30天。通過這種方式,您可以隨時總結下載文件中的任何數據,甚至無需觸摸您的數據庫 。