2013-03-26 38 views
0

所以首先我检查和研究了这个问题在stackoverflow和谷歌,但没有类似的问题。在哪里实施连续访问计数器?

我检查了Count number of consecutive visitsSQL Query: Visited the site each day for 30 consecutive days但它没有帮助。

所以我的问题是在哪里执行测试,如果用户访问该网站连续x时间,在我放在那里,他们检查在服务器端的链接,但我认为它不是很优化,因为每个用户访问网站的时间会触发查询,以检查今天的日期是否等于或高于LastVisit的日期。

在我的应用程序

我已经这样做了查询每个用户加载一个页面来获取他的信息的时间,但如果我添加

update userInfo 
set DaysConsecutivelyVisited=DaysConsecutivelyVisited+1 
when DATEDIFF(CURDATE(),LastVisit)=1 

然后我会在每次用户加载页面时,有两个查询,让我想也许这更好,如果我在客户端而不是服务器端做到这一点。我把一个属性或隐藏的范围文档

<body data-lastvisit="2012-03-25" > 

并在JavaScript我会做的分析,如果$("data-lastvisit")等于昨天我会送一个ajax reqeuest更新DaysConsecutivelyVisited

你觉得呢,这是个好主意吗?

回答

2

你将需要一个参数来比较..这是 - 不幸 - 总是数据库表中的数据。您唯一能做的就是检索页面加载的userinfo,其中最有可能包含字段last_visited。如果日期不等于今天的日期,则注册它。

此外,我会说创建一个字段consecutive_visits并重置为0,以防日期的差异大于一天,并增加它,如果有一天或更少的差异。通过这种方式,您可以在页面加载中获取userobject中的连续访问量。

在这种情况下,我绝对没有看到任何需要ajax请求。它只是将当前用户数据与Date()实例或时间戳进行比较。所有的计算都可以在服务器端完成,只需要额外的MySQL查询以防数值不同。