一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

iis8做网站日志统计工具例子

时间:2022-06-30 18:07:15 编辑:袖梨 来源:一聚教程网

 用什么工具做统计呢?

有的人可能想到做中转URL,比如: 点击广告AV的时候跳转到一个 ad.php, 然后带上些参数, 就成了: ad.php?id=123 等等参数, 然后入库, 但这样的数据是庞大的, 你的库的主力完全不用浪费在这上面...

来我们看下百度是怎么做的:

iis8做网站日志统计工具例子

这是百度广告的某引用页面, 他是通过访问一个图片, 然后带了一堆连妹子都看不懂的参数, 这样就能统计吗?

经过项目中的测试和研究, 发现是行的, 他的思路是这样的:

发送请求(不管是怎么发的) -> 然后 iis/nginx/ 阿帕奇会记录下来这个URL -> 下载/生成日志文件 -> 后端/js处理这个文件 -> 生成要看的数据(可画成图表, 表柱啥的) 你信吗?
实现的过程

注: 此过程为iis8.0环境, nginx,阿帕奇等思路一样

1, 开启一个新域的iis日志, 我这里是W3C 类型的日志, 具体选哪个都一样,只是看自己要的是什么数据了, 然后注意 计划那里, 那里选的东东直接影响着你的日志缓存, 具体自测;

ps:为什么用新域, 因为这个日志文件是针对域名生成的, 如果你在老域上可能会生成很多很多日志文件, 比如你的www.111com.net 有100万个资源,那么这个日志文件是非常庞大的, 不不如启用一个 click.111com.net /log.gif 来做, 你不妨去看看百度.

iis8做网站日志统计工具例子

2, 访问这个域的url吧, 如: http://127.0.0.1/log.gif?type=jserror&uid=&ref=http%3A%2F%2Fwww.111com.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, 打开日志文件夹,(不要说你不知道), 不出意外的话会生成一个这样的东东:

iis8做网站日志统计工具例子

4, 少年, 打开他看看吧...

iis8做网站日志统计工具例子

如图: 红框的东西是我们访问的, 而绿框里的东西不是我们想要的, 但她确实占空间了, 这也是上面说为啥要尽量新域...

好吧, 有这些数据了, 我们还愁没法用吗?

5, 写后端读取她, 我是用php测试的, 当然你完全可以用js

 代码如下 复制代码

//统计的图片名
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, 看下成果吧

iis8做网站日志统计工具例子

图片做统计的优势


    小巧, 快速, 因为这个图只有一点点, 但一定要存在, 不如就是404, 虽然说404也能抓取到, 但404本身是个bug
    不用库, 全是web server本身的功能, 所以她要强大
    应用广泛, 比如 自己定一些参数, type=ad, type=jserror, type=.... 到时候判断这个可以分类
    要比后端跳转快
    前端应用简单... 你只需 new Image然后src你懂的...
    自定义强, 自己根据需要定制参数.


todo

目前我就想到这了, 至于怎么很好的拿iis的日志这还有待研究, 还有就是 怎么很好的 分时间段来画图或者读... 当然可能在地铁的某个角落我就能想到解决方案!

ok, 到此为止, 困了, 下次再试着分析 "百度广告" 的连接方式:

iis8做网站日志统计工具例子

热门栏目