【发布时间】: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