免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3229 | 回复: 13
打印 上一主题 下一主题

[C++] [求助]C++分析日志的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-11 11:18 |只看该作者 |倒序浏览
向各位达人求助C++处理网站日志的问题

我的网站日志里有用户ID,访问IP这样的信息,想要统计用户的独立IP访问量。但是不想用数据库,请问这个如何解决?
我的日志文件的总和最大可能达到上G。请高人帮忙想想办法。
andytodd 该用户已被删除
2 [报告]
发表于 2008-01-11 11:31 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2008-01-11 12:08 |只看该作者
用脚本速度是不是问题尼?不想用数据库主要原因是速度问题。脚本不知道速度怎么样?以前的程序使用php+mysql做的,速度不理想,所以要用C++写。

论坛徽章:
0
4 [报告]
发表于 2008-01-11 14:00 |只看该作者
如果只统计ip个数,就用awk把ip单独另存一个文本,sort排序,uniq 去重,wc统计行数,用管道连成一行命令就可以了。你测一下,只要IP记录行数不超过1000万,应该很快能出来的。

方便一些perl利用散列也可以很快算出来,普通20GB的apache日志,看具体io速度,有raid半小时之内也肯定出来了。就算改成c也快不了多少,瓶颈在硬盘io.

论坛徽章:
0
5 [报告]
发表于 2008-01-11 14:21 |只看该作者
看了您的建议,但是我的分析中有3,4个分组操作就是类似mysql的group by abc,def,ghi 这样的操作然后还要对IP等数据进行排重。
我原来考虑使用容器来解决,但是发现数据大了以后内存不足。您有没有比较好的建议?如何解决这样的问题

论坛徽章:
0
6 [报告]
发表于 2008-01-11 14:30 |只看该作者
原帖由 gqgl 于 2008-1-11 14:21 发表
看了您的建议,但是我的分析中有3,4个分组操作就是类似mysql的group by abc,def,ghi 这样的操作然后还要对IP等数据进行排重。
我原来考虑使用容器来解决,但是发现数据大了以后内存不足。您有没有比较好的建议 ...


最好把你的需求和数据量详细的说一下

论坛徽章:
0
7 [报告]
发表于 2008-01-11 14:42 |只看该作者
我的日志格式是:

pid    sort   domain   url    bt    ip    session   cookie


然后将日志中的数据导入到access表中


这是我现在系统的SQL相信您会了解我的需求了。
SELECT pid, sort, domain, url, bt, COUNT(*) num, COUNT(DISTINCT ip) ip, COUNT(DISTINCT session) session, COUNT(DISTINCT cookie) cookie FROM access WHERE type = 'c' GROUP BY pid, sort, domain, url, bt

通过这个SQL得到我要的结果。

日志的量1G左右

论坛徽章:
0
8 [报告]
发表于 2008-01-11 14:43 |只看该作者
我的日志格式是:

pid    sort   domain   url    bt    ip    session   cookie


然后将日志中的数据导入到access表中


这是我现在系统的SQL相信您会了解我的需求了。
SELECT pid, sort, domain, url, bt, COUNT(*) num, COUNT(DISTINCT ip) ip, COUNT(DISTINCT session) session, COUNT(DISTINCT cookie) cookie FROM access WHERE type = 'c' GROUP BY pid, sort, domain, url, bt

通过这个SQL得到我要的结果。

日志的量1G左右

论坛徽章:
0
9 [报告]
发表于 2008-01-11 14:44 |只看该作者
以前的分析主要慢在数据库,我想脱离数据库实现这样的功能。

论坛徽章:
0
10 [报告]
发表于 2008-01-11 15:02 |只看该作者
原帖由 gqgl 于 2008-1-11 14:43 发表
我的日志格式是:

pid    sort   domain   url    bt    ip    session   cookie


然后将日志中的数据导入到access表中


这是我现在系统的SQL相信您会了解我的需求了。
SELECT pid, sort, domain,  ...



我用perl中的数组来举例:

1、读取文件,行遍历
2、赋值数组
   data{pid, sort, domain, url, bt}{ip}++
    data{pid, sort, domain, url, bt}{session}++
    data{pid, sort, domain, url, bt}{cookie}++
3、输出所有值不为null的数组

不知道有没有解释清楚
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP