我有一個在線詞典。所有輸入都保存在表格「id-word-unixtime」中。現在我想統計在一天中搜索了多少單詞,然後製作包含該數據的圖表或表格。表中的事件unixtime到日統計
什麼是最好的方法來存檔這個?我應該再換一張日期表還是寫一個PHP腳本?
我只是需要基本的方向。
我有一個在線詞典。所有輸入都保存在表格「id-word-unixtime」中。現在我想統計在一天中搜索了多少單詞,然後製作包含該數據的圖表或表格。表中的事件unixtime到日統計
什麼是最好的方法來存檔這個?我應該再換一張日期表還是寫一個PHP腳本?
我只是需要基本的方向。
那裏有很多問題,但您似乎關心的主要問題是從unixtime獲取日期。
MySQL有FROM_UNIXTIME()。
像這樣的東西應該讓你開始:
SELECT FROM_UNIXTIME(unixtime,'%Y-%m-%d') as the_date,
count(word) as word_count
FROM table
-- add conditions here
GROUP BY 1;
如果您對數據呈現特定於PHP的問題,我建議你打開另外一個問題。
您可能想計算一次答案,然後緩存結果,以減少服務器上的負載。一旦一天結束,您只需計算一次所有的統計數據。
對一件事情重要的事情是當一天開始和結束時。如果您的網站有來自全球的訪問者,那麼您應該使用UTC。如果95%的訪客來自美國,東部時間可能會更有意義。
你說得對,這是一個非常基本的SQL查詢。喜歡的東西
SELECT word, count(word) FROM table
WHERE unixtime BETWEEN (starttime AND endtime) GROUP BY word
您可以在任何PHP或MySQL計算starttime
和endtime
。
當然,您需要編寫一個PHP腳本來繪製圖形,但這是另一個問題。
SELECT COUNT(*), FROM_UNIXTIME(unixtime, '%Y-%M-%D')
FROM table
WHERE unixtime BETWEEN $start AND $end
GROUP BY FROM_UNIXTIME(unixtime, '%Y-%M-%D')
這應該會讓你每天搜索每一天。這是一個相當昂貴的搜索,所以你可能想緩存它。