【问题标题】:Hit counter - do I need a dedicated table?Hit counter - 我需要一张专用桌子吗?
【发布时间】:2013-06-22 21:18:17
【问题描述】:

我一直在阅读有关实现命中计数器的各种方法。我最喜欢的是为特定用户设置会话/cookie 标志,以指示他/她是否访问了特定页面。如果未设置标志,我将设置它并将页面的点击次数增加 1。

我知道上面的方法很好,但我也明白它总会有一个解决方法。但是,如果我使用对 page_id 和 ip_address 的组合具有唯一约束的专用表,则它在与会话标志组合使用时应该最有效。但是考虑到我正在处理的网站每天大约有 20000 次点击(这不是很多,但足以淹没我的点击表),是否值得用 IP 地址淹没 MySQL 来捕获点击?

此外,除了这些之外,还有更好的方法来捕获合法点击吗?

【问题讨论】:

  • 只有两种计算点击的方法:cookie 和 IP。 cookie 可以被擦除,这样您就可以通过这种方式来玩弄系统。并且 IP 可以由 MANY 用户共享(例如,像 AOL 这样的大型 NAT 网关)。一个让计数人为地膨胀。另一个隐藏多个有效命中。网络上的命中计数器充其量只是一个近似值,通常毫无用处
  • 同意,然后我将采用会话/cookie 路由。如果我在服务器端保留会话数据集,至少他们不能用点击淹没页面。感谢您的回复。
  • 您还可以实现服务器端会话并在查询 MySQL 之前检查它们是否曾经访问过。执行以下操作不会有问题:例如if(!isset($_SESSION['counter']['pageID'])).. 然后查询 MySQL 以获取特定的访问日期和页面。如果不存在,则继续插入并设置会话。
  • 会话是通过 cookie 实现的。擦除 cookie 意味着“擦除”会话。该会话仍将存在于您的服务器上,但该会话与启动它的用户之间的链接将被切断
  • @MarcB:有道理,我猜客户端的cookies中存储了某种会话ID?但我想,考虑到专用表的性能缺点,这种风险是值得冒的。

标签: php hitcounter


【解决方案1】:

我认为为此设置专用桌子实在是太费力了。 仅在确实需要时才这样做。否则只是浪费时间和资源。 现有表中的字段被递增,最终一个 cookie 在刷新时禁用递增就可以了。

【讨论】:

  • 确实如此。我想我会采取会话/cookie 路线。感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
  • 2011-08-24
  • 2017-04-19
  • 2015-06-20
  • 2014-07-13
相关资源
最近更新 更多