如何开发打点统计系统

最近做了一个打点统计系统,统计系统肯定各个公司都有做过,至于怎么做就不好说了。我见过最多的就是使用php开发一个打点接口,然后在打点接口中做数据点击,这种方法最差的就是每次打点都往数据库中操作,另外一种就是往一个文件中增加数据。对于后一种,我就很奇怪了,你既然php是等于要往日志文件中增加一条记录,那干啥不用web服务器的自身的日志呢?所以我这次就果断使用分析nginx日志的方法来做打点(这个方法也是大多公司统计系统采用的方法吧)。
至于storm,hadoop啥的,太高大上了。没用

 

nginx日志打点第一个使用什么打点接口,当然可以自己放一个文件在服务器,然后访问这个文件。但是实际上nginx有个empty_gif的模块,它把图片存放在nginx的内存中,所以它的访问速度比静态文件的访问速度还快,所以果断选择这个。因此我的配置文件如下:

server {
        listen       80;
        server_name ares.test.com;
        access_log /home/web/ares/log/ares.test.com.access.log;
        access_log /home/web/ares/log/ares.test.com.static.log;
        error_log /home/web/ares/log/ares.test.com.error.log notice;

        root /home/web/test/www/;
        index index.php;

        location = /ares.gif {
            empty_gif;
        }
}

这里我把access_log写两份,目的是希望我一份做存留,一份做分析。

我设计的访问接口是http://ares.test.com/ares.gif?p=a&i=b

这里的p和i是统计的项目和统计项。

 

然后日志写完了之后,就需要进行日志切割了,日志切割怎么搞都行,我就搬起了php最快上搞,就是这里要注意下切割完日志以后要给nginx发送一个信号,让它修改下日志的fd。

       @rename($srcLog, $disLog);

        // 发送信号给nginx
        $pidFile = Yii::app()->params->nginxPid;
        $command = "kill -USR1 `cat ${pidFile}`";

        @system($command);

然后这个脚本我设置每1分钟跑一次,将当前的日志用分钟来重命名

 

下面就是分析日志的过程。

分析日志一定会是多个进程的环境。为什么,因为,一个进程,太慢。那多进程的环境,就需要有多个进程同时读取一个文件的情况,分析日志的时候就需要注意下使用文件锁。

            $disLogs = glob(Yii::app()->params->logFolder . "ares_*.log");

            foreach ($disLogs as $log) {
                $fp = fopen ($log , "rw+");

                // 如果获取到锁
                if (flock($fp , LOCK_EX)) {
                    while(!feof($fp)) {
                        $line = fgets($fp, 4096);
                        // DO SOMETHING
                    }

                    ftruncate($fp, 0);
                    fflush($fp);
                    flock($fp, LOCK_UN);
                    unlink($log);

                    echo "logfile {$log} ok" . PHP_EOL;
                }

                fclose ($fp);
            }

然后这个脚本我会让它循环跑10分钟,每2分钟启动一个脚本,这样就有5个脚本在跑。

至于数据库设计,就和后台需求有关了。

我这里第一版最简单的就是记录下每个小时的点击数。

所以只需要最简单的项目表,统计项表,统计数据表就好。

这样子还有个好处就是可分布式扩展,如果一个统计前端机扛不住了,那么我就单纯加机器就好了,反正这些数据都是往同一个数据库中插入的。

 

至于后台界面开发,最近疯狂喜欢上ACE这套后台模板,然后画图使用HighChart来弄。

后台统计项目如何加功能后面后面再说~

 

至此初步的统计就搞起来了。我在一台机器上测试过前端压力,8核的机器,大概能有1w左右的qps。至少能扛过一阵了。

时间: 2024-11-01 08:27:43

如何开发打点统计系统的相关文章

使用 flex4 开发通用统计系统,发布源代码至github

1,关于flex4  很老的技术,我居然还再研究使用这个东西,自己想想都不敢相信. 技术存在总是有他的理由的.之所以想用flex4 开发一个通用统计系统,还是有几个有点的: a,组件比较全,比较全,基本上省去了自己开发 b,在局域网下一次获取大量json数据并解析展示到flex里面速度比html快,图标效果比较好 c,开发系统一个人就够了,浏览器兼容比较好,只要安装flash就行,尤其要做成产品给xp系统的使用那个IE兼容性痛苦啊 当然也有缺点,技术学习成本不低,属于不流行的没落的技术. 但这个

javascript-怎么用js开发一个这样不规则图形的统计系统?

问题描述 怎么用js开发一个这样不规则图形的统计系统? 解决方案 完全按照高度做比例的话应该不难,白色最底层,红色地二层,黑色第三层,只需要设置红色的高度就可以了,红色的宽度可以和黑色的一样,变换红色的高度,看看这个思路行不? 解决方案二: 钻石是个图片么,钻石中间透明,改变红色高度就行 解决方案三: Echarts.js

PHP学习笔记:php网络流量统计系统

说明:代码来源<PHP和MySQL Web应用开发>一书,还有就是代码有些是经过修改的,经过我的测验全部都可以用.   这里面ip地址显示的正常的,我电脑是支持 ipv6 的.       本示例的数据库脚本 ~~~ 先执行 set names gbk;   (因为脚本中包含中文)再执行语句: source d:\test\Vote.sql;   CREATE DATABASE IF NOT EXISTS FluxStat COLLATE 'gb2312_chinese_ci'; USE Fl

利用JS跨域做一个简单的页面访问统计系统

其实在大部分互联网web产品中,我们通常会用百度统计或者谷歌统计分析系统,通过在程序中引入特定的JS脚本,然后便可以在这些统计系统中看到自己网站页面具体的访问情况.但是有些时候,由于一些特殊情况,我们需要自己来设计统计系统.由于前段时间公司的业务需求,我也是自己尝试了下,本文提供的是一个基本思路,统计系统也比较简单.   几个基本统计需求: 1.统计web每个页面用户访问量 2.统计用户访问者的和IP地址信息 3.页面之间的跳转情况 4.访问高峰时间段   服务器结构: 数据库表设计:    

迅雷统计系统开始测试

目前国内比较流行的网站流量统计服务是Google Analytics.雅虎统计和百度统计,Google Analytics功能最强大,几乎所有你能想到的功能都能实现,不过缺点是操作较为复杂,没有图片方式的代码,只提供JavaScript方式的代码,这就限制了其应用范围,不能使用其实现RSS Feed的统计:雅虎统计虽然提供图片方式的代码,但是统计系统过于简单,很多功能都无法实现,百度统计的功能多一些,但也不如Google Analytics功能多,同时也不支持图片方式代码. 迅雷统计是一个新的统

我们需要什么样的网站数据 统计系统该如何取舍

中介交易 SEO诊断 淘宝客 云主机 技术大厅 每家公司都有各自不同的需求,我需要的是什么? 眼花缭乱的统计系统,该如何取舍? 流量概况 今天的流量是增了?是减了?幅度是多少? 现在所调用的统计系统,能否很方便的公开一个概况给广告主查询? 全景统计.百度统计目前没有相关功能.Google统计实在难以共享,就算共享了,没接触过的人也不太容易看明白.而CNZZ目前只能公开全部的信息,这其中包含了站长引流量所用的"搜索关键词"以及重要的"推介路径",这些我们不想让竞争对手

安卓(Android)开发之统计App启动时间_Android

前言 作为 Android 开发者,想必多多少少要接触启动速度优化相关的事情,当用户越来越多,产品的功能也随着迭代越来越多,App 逐渐变得臃肿是一件很常见的现象,甚至可以说是不可避免的现象,随之而来的工作就是优化 App 性能,其中最主要的一项就是启动速度优化.但本文的主角并不是启动速度优化,而是启动时间统计. 一.启动类型 工欲善其事,必先利其器.想要优化 App 的启动速度,必须有准确衡量启动时间的方法,否则优化完之后效果怎样,自己都不知道,说出去别人也不信服不是.在做 App 启动时间统

我们需要什么样的统计系统

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 那天网站运营群54338195里的一个朋友根-wsli(635918647)送了个维度统计的邀请码,吸引我的是所谓的性别收入分析以及鼠标路径分析2个功能,之前有照着一篇维度的软文自己开发了一个简单的鼠标热点分析程序,发现鼠标路径分析对于改善用户体验这方面还是有一定的作用的,便想借鉴下维度是如何做的.然而下载并安装完维度统计后才遗憾地发现,鼠标

使用Piwik架设个人专属的网站流量统计系统

中介交易 SEO诊断 淘宝客 云主机 技术大厅 Piwik是一个PHP和MySQL的开放源代码的Web统计软件. 它给你一些关于你的网站的实用统计报告,比如网页浏览人数, 访问最多的页面, 搜索引擎关键词等等- Piwik拥有众多不同功能的插件,你可以添加新的功能或是移除你不需要的功能,Piwik同样可以安装在你的服务器上面,数据就保存在你自己的服务器上面.你可以非常容易的插入统计图表到你的博客或是网站抑或是后台的控制面板中.安装完成后,你只需将一小段代码放到将要统计的网页中即可. piwik这