• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

计数器结合memcache

php 搞代码 4年前 (2021-12-20) 30次浏览 已收录 0个评论

什么是计数器,这篇博文讲的计数器是用于记录访问网站页面的次数,独立ip数,或者根据一定的规定来统计页面访问数等。下面是曾经做过的一次计数器,下面是一个简单的流程。

计数器构思

要实现上面的流程要做到一下几步:

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表用于登录用户访问页面的记录,有的公司会要求要这个统计,因为在线用户一般都是活跃用户,比较有价值的用户。

什么东西都说说挺容易的,做起来就没那么容易了,不过有了指导思想,做起来也不会有那么困难了。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:计数器结合memcache
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址