假如你用一個很好的紀錄分析器,像是Analog或一些類似的東西,那麼算出你的網站點選是從哪裡來和哪些網頁被浏覽過並不是太困難的事.
但是假如你想要使正在運作的報表停下來,你就必須用一個不一樣的路線
大約六個月之前,我正在將Apache的紀錄檔案引進到一個SQL資料庫,然後對他做一個特別的查詢.
很不幸的,這使的我必須用手動的將這些紀錄檔案一個個抓取出來,稍微扭轉一點形式,然後輸出.我要一些更好的東西 -可以持續更新的東西,能給我哪些的內容被浏覽的資訊,浏覽器和平台的統計表,和隨著時間的趨勢.
這篇文章的解決方案版本可以讓我很好的使用好幾年.我提高他的重要性,當我們經由SourceForge系統建立SourceForge,經由這個SourceForge.net網站管線的所有紀錄和軌跡,包含在這個網址上網頁浏覽者和在1200專案的每一個網頁浏覽者.
基本上,我要做的每一個紀錄動作就是在一個資料庫的資料表上增加一列(在這個范例是網頁浏覽者,但是你可以從其他的網址紀錄橫幅廣告增加的浏覽者,點選數,單獨點選..等等)
這個就是我正在SourceForge上使用的資料表結構:
create table activity_log (
day integer DEFAULT 0 NOT NULL,
hour integer DEFAULT 0 NOT NULL,
group_id integer DEFAULT 0 NOT NULL,
browser varchar(8) DEFAULT OTHER NOT NULL,
ver float(10) DEFAULT 0.00 NOT NULL,
platform varchar(8) DEFAULT OTHER NOT NULL,
time integer DEFAULT 0 NOT NULL,
page text,
type integer DEFAULT 0 NOT NULL
);
假如你要試著去紀錄多重的網址的話,group_id這一欄可以使用.只要對每一個網址分配不同的group_id,而且將他傳遞在URL的位址上(顯示在下面).
type在這些范例是未用過的,但是你可以使用他去追蹤不同類型的行為,像是廣告的點選數,從別的網址過來的點選數..等等.
browser,ver,platform 都可以從你的浏覽器傳送到網站伺服器的一步就是將資料轉到資料表裡面.假如所有在盒子裡面的所有經由PHP和其他所有不同的網站都有用的話,那真是個完美的世界.不幸地,我有大量的伺服器散布在整個國家之中,而且我要一天24小時搜集每一個伺服器的每一個網頁浏覽資訊.
所以我必須要使用一個1x1 像素的GIF小技巧.我有一個GIF在每一個伺服器的網頁,看起來像這樣:
在這個圖形中有四個元件
Remote web server
Web browser (參觀網站的使用者)
Central logging server
Central database server
所以當使用者參觀網站,得到一個網頁來使用,浏覽器向伺服器中心要求看到一個1x1的gif圖片.伺服器中心紀錄那些資訊使的產稱報表更容易.
報 表
只要寫一些簡單的SQL就可以產生所有的資料
使用 ShowResults() function來顯示 你也可以用圖來表示(參考prior article)
現在我可以在任何時間執行我的統計報表
Sample SQL to run reports
Page Views By Day
SELECT day, count(*)
FROM activity_log
WHERE type=0 GROUP BY day
Page Views By Browser
SELECT browser, count(*)
FROM activity_log
WHERE type=0 GROUP BY browser
Page Views By Browser Version
SELECT browser, ver, count(*)
FROM activity_log
WHERE type=0 GROUP BY browser, ver
Page Views By Platform
SELECT platform, count(*)
FROM activity_log
WHERE type=0 GROUP BY platform
這裡.zip 包含 browser detection 和 database abstraction libraries.