推广 热搜: 行业  机械  设备    教师  经纪  系统  参数    蒸汽 

网站访问统计模块研究

   日期:2024-11-10     移动:http://yejunbin01.xhstdz.com/mobile/quote/724.html
网站统计所需要的基础数据:

网站访问统计模块研究

示例 URL:cnzz stat.htm?id=527226&agt=mozilla/5.0%20%28×11%3B%20u%3B%20linux%20i686%3B%20en-us%3B%20rv%3A1.8.1.6%29%20gecko/20070723%20iceweasel/2.0.0.6%20%28debian-2.0.0.6-0etch1+lenny1%29&r=&aN=Netscape&lg=undefined&OS=Linux%20i686&aV=5.0%20%28X11%3B%20en-US%29&ntime=0.47376000%201189490530&repeatip=0&rtime=14&cnzz_eid=25620072-http%3A//www.muzone.cn/html/bbs.html&showp=1400×1050 从此URL可以得到下面几个字段: id : 站点ID agt : 浏览器 ref : referrer 引用页URL aN : appName 浏览器应用程序名称 lang : language 浏览器的语言 OS : 操作系统名称 aV : 浏览器应用程序版本号 showp : 用户屏幕分变率 格式:1024×768 …………… 上面这些可以直接用js从用户 的客户端上获取的,这些直接传递到 统计服务器即可。 repeatip: ntime: rtime: 参数传递流程: explorer stat js stat serv database id 从嵌入到站点的URL获取 从stat js 生成的URL获取 agt 生成 获取 获取,统计数据源,并临时存储 永久存储 url 下面的统计结构体处理步骤: typedef struct { struct hash_table *pages; // 请求页面 struct hash_table *visitors; // 最近访客 struct hash_table *referers; // 来源 struct hash_table *screenres; // screen struct hash_table *screendepth; // 色彩 struct hash_table *flashversions; // flash版本 struct hash_table *javaenabled; // 是否安装 java struct hash_table *os; // os struct hash_table *browsers; // browsers struct hash_table *agents; // user agent struct hash_table *returnvisits; // 回访 struct hash_table *entries; // 入口 struct hash_table *locations; // 区域 struct hash_table *pageviews; // 访问页面数 struct hash_table *searchengines; // 搜索引擎 struct hash_table *keywords; // 关键词 int pv; // total pv int uv; // total uv } counter_t; pages , referers , screenres , screendept , flashversions , javaenabled , os 这几个处理都差不多,处理: 从统计URL的参数中取出相应的值,累加到哈希表中。 其中referers为空的时候必须也要记录的,这点要特别注意了。这时的referers可以指定一个固定值,如: http://dummy.noreferer.org borwsers的处理:只关心浏览器的名字即可,这个名字在user-agent字段的第一个词。版本号为第二个词 这两 个之间是用 / 隔开的 agents 的处理:这个不是和上面的重复了吗?就是把全部内容记录下来吧。上面的只记录user-agent中的浏览器名字而已。 entries 是什么意思,即浏览此网站的referers是其他的网站的访问,此时的url 便是entries中的一个元素。 returnvisits: 这个现在应该是做不了的,需要和数据结合。其实这个功能应该是在显示的时候完成计算的吧。而不是在这个统计模块中实现的。因为这个模块关心的一小段时间内的站点访问情况。 locations : 在模块中调用 取远程客户端地址的函数,得到IP地址,再转为城市名称即可。这个不需要统计URL传递。 pageviews: 这个是不是和pages 一个意思的,重复信息了吧。 searchengines: 这个搜索引擎指的是发出这个请求的客户端,如果这个请求客户端是一些已知的搜索引擎蜘蛛程序,则统计在这里面了。这里面的数据应该是 browsers 哈希表中的一个子集了,是否需要呢。 keywords : 这个表存储的是由搜索引擎引导过来的,可以从引用中取到搜索引擎中的关键词,由于每个搜索引擎的关键词参数名不一样,所以还得针对每种搜索引擎做特殊处理。这个就是维护一个搜索引擎查询URL格式了,另一种方法是记录下这个来自搜索引擎的referer,这样在显示关键词的时候,可以直接显示这个引用URL,可以再次浏览这个搜索引擎页面了。如果使用后者,那么这个哈希表还要变了。 关于UV:访问者个数,在用户访问此站点时如果不带我们统计所给的cookie 则认为是一个新访问者. 关于 cookie有效存活时间,有等讨论。这个cookie可以在 嵌入站点中的URL中写入,并作为一个统计URL的参数传入到统计的server中。 统计模块导出数据的时间记录问题: 为了让这个时间准确一点,导出的时间字段有两个,1 是统计结束计时时间,2 是统计入库时间,前面一个字段是由统计模块维护并在导出时传出来的,这样的时间更精确一些,这两个时间有点间隔,正常情况下不会间隔太长,10秒以内,是不是需要这个字段呢。在发生异常时有用,这时我们把数据导到一个临时文件,就没有入库时间了。所以还是带着吧。 我遇到过cnzz的统计显示出来的那几个字是编码的时候。这个地方要注意了,指定输出的编码类型。 跳出页面: 访问时长(页面停留时间: 访问深度: 网络位置: 网络速度: 最近访客: 统计数据定时导出详细步骤: 数据库结构: 测试:编写脚本程序,生成一些随机数据,测试此统计模块的运行情况。
本文地址:http://yejunbin01.xhstdz.com/quote/724.html    物流园资讯网 http://yejunbin01.xhstdz.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号