H5W3
当前位置:H5W3 > php > 正文

【php】集思广益,关于有效浏览次数的计算,大家都是如何来做呢?

比如一个人对同一篇文章不停得刷新,这样不能算有效。我现在的想法是当用户第一次浏览文章的时候存一个cookie,cookie里有文章的id,有效期一个小时,如果同一小时,该用户访问该文章,如果cookie存在则不记录。不知道大家又没有更加高端,友好的统计方式。

回答

浏览记录最好通过日志来记录,然后进行日志分析即可,好处是异步。

日志记录用户ID,URL,访问时间。然后简单去做去重统计即可。

登录用户:用户ID+log+时间判断
未登录用户:客户端IP+log+时间判断
cookie也不错的,如果要节约资源直接CNZZ统计、百度统计

cookie记录不太合适,会造成request http header过大,现代浏览器可以用local storage存储在客户端,判断是否存在文章id再进行计数的request

这种统计就交给CNZZ,百度统计,谷歌统计等第三方统计平台吧。
浏览量,单页面浏览量,单人单页面浏览量,老访客,新访客等等都能统计到,展现方式也很友好。
还能数据导出。

可以采用bitmap思想:每篇文章对应一个bitmap,每个uid对应bitmap中的某offset,某uid访问这篇文章,把uid对应的offset置为1。这样就不会出现重复访问的问题,而且有现成的方法计算值为1的bit的数量。如果网站访问量不是很大的话,每篇文章对应的bitmap为128*128足够了。这样有点是简单,缺点可能就是还有存在资源浪费。

自己做个事件记录

客户端:
检测cookie,没有就随机生成一个作为客户标识(uid),并将超时设置很长很长….
js发送一条请求到事件记录服务器,参数:timestamp uid eventName eventValue
eventName 是事件名,比如 postVisit
eventValue是事件值,比如 <帖子ID>

服务端:
1. 记录事件到文件,可以按时间比如10分钟一个文件
2. 写个脚本 定时(10分钟)处理事件记录文件,根据eventName,eventValue 计算帖子访问量,然后更新数据库中对应字段(累加)

自由组合eventName,eventValue可以做多种事件统计

抛砖引玉一下,异步请求,用bloomfilter后台判断:
用户登录用用户id,用户未登录,用IP+UA或者其他生成用户标识
后台有一个bloomfilter的集合,用来判断是否已存在

本文地址:H5W3 » 【php】集思广益,关于有效浏览次数的计算,大家都是如何来做呢?

评论 0

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