如何在文章上实现独特的点击

时间:2009-11-26 14:50:22

标签: php database algorithm session cookies

我想知道最好的方法是为文章,产品等实现点击计数器。现在如果有人访问该页面,计数器只会在数据库中添加一个。如果有人刷新页面,它会连续计数,误导结果和不必要的读取,写入。

我正在考虑存储他们的ip,但我不知道如何在mysql中建模。如果我为每次点击创建一个db记录,那将是巨大的。

我读过这篇文章: How to write an efficient hit counter for websites

最佳答案是使用日志,然后将此日志更新为db。但话又说回来。

  

确定新命中的最佳方法是使用IP还是其他变量。什么是再次记录特定用户命中的可接受时间。

也欢迎任何其他类型的实现。

4 个答案:

答案 0 :(得分:2)

我想我只是使用他们的会话ID来检查。会话ID很容易获得,并且无需进行数据库命中即可检索它。对我来说可接受的时间是他们的下一次会议。在他们的会话中,我会跟踪他们点击的页面。这样,数据库中就没有任何东西可以检查,当会话消失时数据就会消失。

答案 1 :(得分:2)

您也可以只存储您首次登录的IP地址和时间,只有在时间足够长(可能是30分钟)时才会增加,然后还会增加与IP地址相关的时间。

答案 2 :(得分:1)

最简单的方法:当用户首次访问时,递增计数器并向其发送cookie。如果您检测到cookie,请不要递增计数器。

答案 3 :(得分:0)

这很棘手。真的不可能100%正确:

  1. 如果您依赖Cookie,那么当它们被删除(1),到期(1)或被禁用时会发生什么?{/ 1}}
  2. 如果您依赖IP,那些通过代理访问您网站的人会发生什么?有足够的公司,ISP只允许用户通过代理(2)和/或(3)
  3. 会话ID:当它存储为cookie时,请参阅1.;如果不是,则每次用户访问您的站点时都会重置它,而不会将Session Id GET / POST参数设置为(1)(如果会话始终通过身份验证过程绑定到用户,则情况不同)
  4. 最常见的实现是使用cookie。记住它并不完美。

    (1)您将从同一位用户获得多次点击 (1)除非您处理不允许使用Cookie的客户端,否则您将获得同一用户的大量点击 (2)您只能获得多个用户的一次点击