请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

一起开发

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

php结合memcache实现访问统计文章点击的计数器

发表于 2012-11-11 13:03 作者:phper
php结合memcache实现访问统计文章点击的计数
随着访问量的增大,点击数直接更新数据库已经不太可能了,数据库中点击的更新 ...
Web开发利器,简版开发手册助您快速开发(图
web开发,帮助手册是我们经常查询的,查函数、查属性等等,下面图片里综合了各开发手册 ...
        随着访问量的增大,点击数直接更新数据库已经不太可能了,数据库中点击的更新已经不能再满足高并发的访问了,所以我们就要考虑缓存机制来缓解数据库压力,而又很好的统计点击数,下面我们介绍一下php结合memcache实现访问统计、文章点击的计数器实现原理:
计数器是用于记录访问网站页面的次数,独立ip数,或者根据一定的规定来统计页面访问数等。下面是曾经做过的一次计数器,下面是一个简单的流程。

php结合memcache实现访问统计文章点击的计数器

php结合memcache实现访问统计文章点击的计数器

要实现上面的流程要做到一下几步:
1,在页面的共用模块,或者共用文件中加上一个计数接口。
有的人做计数器是这样的,有一个计数的接口,但是呢需要在每个页面中加上这个接口,如果有100个页面,是不是要加一百个呢?每个页面加一个,到是很符合统计页面的思想,但是这样会加大工作量的,所以要尽量免费每个页面去加接口。
2,引入memcache
为什么要引入memcache呢?我们来看一下传统的计数器,或者是从网上下的计数器,都有一个共同特点。举个例子来说,一个用户访问了页面A,程序会去数据库判断一下,这个IP有没有访问过该页面,如果没有,在数据库表中新建一条,如果有看看是不是在規定的无效期内,如果在,不作处理,如果不在,访问次数加1,到这儿访问A页面的计数器工作结束,接着又访问了B页面,也做同样的处理。也就是说不管我点什么页面都要对数据库进行操作,这样大大的加大了数据库的负担,并且数据库又是特别容易产生瓶颈的地方。
如果引入了memcache,我们就可以减少对数据库的查询。举例来说明,一个用户访问了页面A,程序去到memcache查看一下KEY=>VALUE有没有对应的值,如果没有,在数据库表新建一条,然后在memecache中建一个KEY=>VALUE的值,如果有,查看一下是不是在规定的无效时间内,如果在,不作处理,如果不在,更新数据库访问次数加1,更新memcache中所对应KEY=>VALUE中的时间。这样操作后,前端记录数据时,只有插入,更新操作,没有查询操作,并且查询操作占了很大一部分数据库连接。用memcache更快,直接从内存中读取数据。
解释一下上面提到的规定的无效时间:我现在规定一个时间段为半个小时,一个用户访问了A页面,在5分钟之后又来访问页面A,或者是直接按F5进行刷新,这样是算做一条呢,还是算做多条呢。我处理的方式是一条,这样使页面的统计更加的准确。如果把这个时间设置成为一天,那么页面访问数根该页面一天的独立IP统计就是一个值了。
3,数据库设计端
a),ip和页面关系表
b),页面记录表
c),以天为记录的页面统计表
d),用户和页面访问关系表
有了上面四个表,基本上可以满足页面统计的要求了。
a表用于记录ip和页面访问的关系,以及最后访问的时间;b表用于记录每个页面访问的次数。c表用于统计页面每天的
访问总量。d表用于登录用户访问页面的记录,有的公司会要求要这个统计,因为在线用户一般都是活跃用户,比较有价值的用户。
以上只是一个实现的思路原理,大家可以根据原理去实现。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|一起开发   

GMT+8, 2017-9-23 20:38 , Processed in 0.125254 second(s), 31 queries .

Powered by Discuz! X2.5 Licensed

© 2001-2012 Comsenz Inc.

回顶部