詢問看看 常駐程序問題以及每日統計使用方法


#1

詢問看看 常駐程序問題

網站做到一定程度 接著就是看一些流量以及使用的情況 每天 或是月份統計

不知道有沒有實際功能 可以在每天中午12點 或是晚上12點整 時 進行統計

例如 登入人數 某頁面的瀏覽人數 然後 統計完之後 該資料表自動清空 每天自動統計

類似 http://stackoverflow.com/questions/18632644/google-analytics-with-rails-4

但有好有壞 非常方便的工具 但不知道後面會變得很難跳脫他的功能

後面 不就可以更方便的去統計網站實際的使用情形

但這些東西 是自己做 還是給google analytics的統計工具 統一來做會比較OK呢

不是很清楚 想問看看這一塊的內容或是方式

:slight_smile:


#2

我們是自己做 … GA 由另外一批人來操作,和站內實際資料無關
一邊是拿來做效能調整的,一邊是實際站內評量資料,後者最準確

類似庫存,進銷存,毛利,這些都是非常敏感的資料,你不會想用 GA 來做唄?

再來實作方式,你可以新增一個類似 statistics 的 table,kind / sub_kind 為資料種類,cycle 為區間,類似每週每月每年,然後用類似下面的語法

INSERT INTO statistics (
  kind , sub_kind , cycle ,
  data1 , data2 ,
  date
)
  SELECT
    0 AS kind , 1 AS sub_kind , 1 AS cycle ,
    SUM(data1) AS data1 , SUM(data2) AS data2 ,
    TIMESTAMP(DATE_FORMAT(created_at , "\%Y-\%m-\%d 01:01:01")) AS date
  FROM items
  WHERE status = 2 AND created_at BETWEEN ? AND ?
  GROUP BY DATE_FORMAT(created_at , "\%Y-\%m-\%d")
ON DUPLICATE KEY UPDATE data1 = VALUES(data1) , data2 = VALUES(data2)

其中 statistics 的 kind , sub_kind , cycle , date 增加 unique index

上面是最簡式,兩個問號是你想要得資料區間,否則會全掃,還有另外的做法,類似 created_at 可以先用 UNIX_TIMESTAMP 後再用 / 一天的秒數的方式來做一天的集合,不過最簡式的 demo 這樣應該會比較清楚才是

上面是一日的量,之後如何求每個月的?把同表 cycle 為 1 的再 group by 月份即可,不要從來源資料來,否則可能資料量太多你會噴效能的

再來是頁面計數器,這個就是 redis 的強項,或是你可以用 log 分析的方式來做

類似你拆解你 apache / nginx 的 log 就可以統計出該日所有頁面的所有數量,這個是後置分析,以前有個專案叫做 awstats 非常有趣,你可以去玩看看

如果要即時的話用 redis 的 incr 即可,把每個頁面編個 key,之後拉出來,這邊『不要用 DB 實作』,因為很蠢,且要限制 key 的量,否則還是會噴記憶體的,之前有篇 Redis / SSDB 的簡介才是

so~ 方法很多種,找一個適合你的即可,至於 SQL 的那個你要去瞭解整個語法的意思和達成的目的,之後才能活用就是了,以上


#3

好的

我再找看看關鍵字相關訊息

因為我原本的想法 如果都要存進db 感覺會拖慢很多系統速度 網站越大越嚴重 而且有點怪

感覺還是要朝log檔去實做

然後最多每天最後再統計出一筆存db就好

如果有爆量 或是異常 再單獨去查看當天log內容就好

目前大概的想法 細部我還是要再去蒐集一些資料看看該如何動手做看看

:sweat_smile:

先謝過jc大給的這些資訊