用什麼工具做統計呢?
有的人可能想到做中轉URL,比如: 點擊廣告AV的時候跳轉到一個 ad.php, 然後帶上些參數, 就成了: ad.php?id=123 等等參數, 然後入庫, 但這樣的資料是龐大的, 你的庫的主力完全不用浪費在這上面...
來我們看下百度是怎麼做的:
這是百度廣告的某引用頁面, 他是通過訪問一個圖片, 然後帶了一堆連妹子都看不懂的參數, 這樣就能統計嗎?
經過項目中的測試和研究, 發現是行的, 他的思路是這樣的:
發送請求(不管是怎麼發的) -> 然後 iis/nginx/ 阿帕奇會記錄下來這個URL -> 下載/組建記錄檔檔案 -> 後端/js處理這個檔案 -> 產生要看的資料(可畫成圖表, 表柱啥的) 你信嗎?
實現的過程
注: 此過程為iis8.0環境, nginx,阿帕奇等思路一樣
1, 開啟一個新域的iis日誌, 我這裡是W3C 類型的日誌, 具體選哪個都一樣,只是看自己要的是什麼資料了, 然後注意 計劃那裡, 那裡選的東東直接影響著你的日誌緩衝, 具體自測;
ps:為什麼用新域, 因為這個記錄檔是針對網域名稱產生的, 如果你在老域上可能會產生很多很多記錄檔, 比如你的www.111cn.net 有100萬個資源,那麼這個記錄檔是非常龐大的, 不不如啟用一個 click.111cn.net /log.gif 來做, 你不妨去看看百度.
2, 訪問這個域的url吧, 如: http://127.0.0.1/log.gif?type=jserror&uid=&ref=http%3A%2F%2Fwww.111cn.net %2Fhtml%2Fxieliang.html&content=%E7%99%BB%E5%BD%95%E5%BC%82%E6%AD%A5%E6%8A%A5%E9%94%99,%E9%94%99%E8%AF%AF%E7%B1%BB%E5%9E%8B%E4%B8%BAjson%E8%A7%A3%E6%9E%90%E5%A4%B1%E8%B4%A5&r=100000 , 你可以多訪問點, 然後坐等組建記錄檔吧!
3, 開啟記錄檔夾,(不要說你不知道), 不出意外的話會產生一個這樣的東東:
4, 少年, 開啟他看看吧...
如圖: 紅框的東西是我們訪問的, 而綠框裡的東西不是我們想要的, 但她確實占空間了, 這也是上面說為啥要盡量新域...
好吧, 有這些資料了, 我們還愁沒法用嗎?
5, 寫後端讀取她, 我是用php測試的, 當然你完全可以用js
| 代碼如下 |
複製代碼 |
|
<?php
//統計的圖片名
define('URLNAME', 'log.gif');
//類比抓log記錄檔
$content = file_get_contents("log.txt");
//查到的每行
$arr = preg_split('/[\n]/', $content);
//行內包括 目標 URLNAME 的
$result = array();
foreach ($arr as $key => $value) {
//如果這行包含靶心圖表片
if(strpos($value, URLNAME) !== FALSE){
$temp = array();
//追加一個all為當前行
$temp['all'] = $value;
//查時間
preg_match('/^(?:[\w\-])+\s(?:[^\s]+?)\s/', $value, $temp2);
if(!empty($temp2)){
$temp['time'] = $temp2[0];
}
//查參數
preg_match('/'.URLNAME.'\s+(\S+?)\s/', $value, $temp2);
if(!empty($temp2)){
$temp['param'] = array();
$temp2 = explode('&', $temp2[1]);
for ($i=0; $i < count($temp2); $i++) {
$temp3 = explode('=', $temp2[$i]);
if(!empty($temp3)){
$temp['param'][$temp3[0]] = urldecode($temp3[1]);
}
}
}
$result[] = $temp;
}
}
echo json_encode(array('data'=>$result)); |
6, 看下成果吧
圖片做統計的優勢
小巧, 快速, 因為這個圖只有一點點, 但一定要存在, 不如就是404, 雖然說404也能抓取到, 但404本身是個bug
不用庫, 全是web server本身的功能, 所以她要強大
應用廣泛, 比如 自己定一些參數, type=ad, type=jserror, type=.... 到時候判斷這個可以分類
要比後端跳轉快
前端應用簡單... 你只需 new Image然後src你懂的...
自訂強, 自己根據需要定製參數.
todo
目前我就想到這了, 至於怎麼很好的拿iis的日誌這還有待研究, 還有就是 怎麼很好的 分時間段來畫圖或者讀... 當然可能在地鐵的某個角落我就能想到解決方案!
ok, 到此為止, 困了, 下次再試著分析 "百度廣告" 的串連方式: