记录用户网页在线以及正负倒计时

 在PPC的问答求助区曾提过一个问题,如下:

本人正在开发 一个小游戏,有一个在线打工的操作[每小时要作一次数据 统计 ]
大体情况如下

1:点击在线打工的时候,系统 记录打工的数据以及数据结算的时间

2:计划任务定时处理数据,进行用户结算

3:判断用户是否在线,根据是否在线进行不同的处理

其中1、2步已经解决 ,但是第3步的时候比较棘手,
我之前的处理是模仿UCHOME的SESSION表[其实根本就没存SESSIONID],
但是这个表里的数据记录的是最近一段时间有活动或者操作的用户[比如说该用户30分钟内有对页面 操作,而一旦该用户30分钟没操作,系统会通过JS触发把该条数据删除,标志离线]

但是这个并不能满足我的需求,我是要求只要用户把网站开着[哪怕我只把网站开着,然后一天不去动它],就标志该用户在线,而用户一旦把网站关闭,就标志该用户离线。


其实实质上上是要记录用户的网页是否打开,如今这个问题已经解决,现剖析下解决方案

其实我们可以分析,服务端要判断用户是否把网页打开,只有模拟用户向服务端发送请求才能做到,而且为了保证长时间的监控用户,用户必须每隔一段时间就向服务端请求一次
向服务端请求可以通过客户端的JS进行操作,在onload中用setinterval调用一个发送的函数即可

我的具体操作如下:
1. 用户点击打工,触动开始打工的函数,AJAX更改用户打工状态,同时向数据库写入一条新的打工数据,并且记录该打工数据的请求时间

2. 同时在这个函数中内置还要包括一个通过setinterval 定时请求的函数,这个函数保证用户在打工状态下每隔5秒向服务端请求一次,同时更新用户的最后一次请求的时间

3. 另外还有一个处理是要防止用户打开多个网页的时候重复请求,解决这个问题的话可以在每次请求时间更新的时候记录下COOKIE,下次执行请求前先判断下cookie的上次操作时间,

 
   比如cookie记录时间距离现在时间小于5秒,就不发送请求

具体实现代码如下:

客户端

<script language="javascript">


var curworktype = {$mybabytradestatus};

//可定义值(当前时间 - 打工开始时间=?[在线的时候处理])  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值