PHP计算
用户在线时间长度的几种
方法:
下面是几种常用的计算用户在线长度的方法,并根据不同的
情况做出相应的选择。
首先,我们
介绍了涉及四个字段的数据表结构:
UID:用户ID
session_id:的session_id
系统产生的用户
登录后,和PHP使用session_id获得()
函数 login_time:登录时间
lout_time:登机时间
1。
服务器
设置一个常规轮询
脚本。这个方法是在服务器端编写一个定时
执行脚本,比如在5分钟内执行。根据数据库中的记录,我们可以判断服务器上仍然存在的每一届session_id。如果有,我们更新lout_time不存在。这也可以准确地计算在线时间,但缺点是,它需要对服务器的
控制。否则,它无法设置时间脚本。Linux系统可以实现通过crontab,和Windows系统可以通过计划
任务完成。如果你只是买一个虚拟主机,这种方法也不适合你。
2。客户端向服务器发送请求的时候。方法是在用户登录,
用户名,session_id,login_time插入一条记录,然后设置一个定时器在JS的客户端,比如每10分钟向服务器发送请求,从而达到更新登出时间,目的当然,设置间隔时间短,数据可能会更准确。但相应的负载系统会更高,这可以根据实际情况设置合适的值。这种方法被广泛应用于
网页游戏,因为几乎所有的请求
都是Ajax请求的
网页游戏,无需刷新页面。刷新页面后,计时器就失去了它的值,这就是这种方法的局限性。
三.当用户处于活动状态时更新注销时间。这样,当用户处于非活动状态或
退出时,数据库中自然存在的到达时间,这是本文的重点。
首先,成功的用户登录后,记录它的UID和session_id,呈现时间为登陆时间。现在时间+ 600s作为登出时间插入数据库。
< PHP
UID = { 'uid _session美元美元美元的} = { 'id' }信息;
session_id美元美元'session_id _session { } == session_id();
login_time美元=时间();
lout_time美元=时间()+ 600;
为SQL = 插入member_login(UID,session_id,login_time,lout_time)值。
mysql_query($ SQL);
>
然后,当用户处于活动状态时,即单击页面时,如果会话存在或处于登录状态,则它将更新用户的登机时间。
< PHP
如果($ _session { 'uid ' }){
美元美元'uid_session UID = { };
session_id美元美元'session_id_session { } =;
lout_time美元=时间()+ 600;
为SQL = 更新member_login集lout_time =美元,美元lout_time UID = UID和session_id =session_idlsquo美元;;;
mysql_query($ SQL);
}
>
这种方法的优点是实现起来比较简单,可以应用于大多数
网站。没有额外的服务器需求,它也可以准确地计算用户的在线时间。
缺点也很明显,它增加了数据库的更新
操作,增加了系统的负载,但是对于中小型站点来说不应该是个问题。