社区
Web 开发
帖子详情
[讨论]在线用户情况的统计!谢谢!
flybird079
2003-08-01 11:34:14
最近在做一个项目时遇到这样一个需求,需要统计通过身份验证的用户在线情况,目的是为了实现防止重复登录和对服务器负载情况的跟踪。觉得没有什么好的解决办法,如果在数据库中加入在线用户表,那在线用户的添加是没有什么问题,但是用户退出时(非正常退出,如关闭浏览器,死机重启)怎么处理表呢?
请问有谁做过这样的东东或者有什么好的想法,请指教。和大家交流一下,至于分可以再加,谢谢!
(JSP平台上)
...全文
34
17
打赏
收藏
[讨论]在线用户情况的统计!谢谢!
最近在做一个项目时遇到这样一个需求,需要统计通过身份验证的用户在线情况,目的是为了实现防止重复登录和对服务器负载情况的跟踪。觉得没有什么好的解决办法,如果在数据库中加入在线用户表,那在线用户的添加是没有什么问题,但是用户退出时(非正常退出,如关闭浏览器,死机重启)怎么处理表呢? 请问有谁做过这样的东东或者有什么好的想法,请指教。和大家交流一下,至于分可以再加,谢谢! (JSP平台上)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flybird079
2003-10-16
打赏
举报
回复
现在问题是初步解决了,使用 HttpSessionBindingListener 实现,但是如果用户是关闭浏览器的话还是要等session失效时间到了才能监听到。这样造成一个结果是在最坏情况下如果session失效时间设为40分钟,服务器已达到最高负载并且所有用户处在同一个配电区域,此时如果断电了,服务器只能等session失效也就是最多40分钟后才能将负载清空,也就是说所有的用户将有靠近40分钟无法使用服务器的资源。这种情况也比较难处理啊
ychunshui
2003-09-17
打赏
举报
回复
acl是什么来的?
shipp
2003-09-16
打赏
举报
回复
用ACL
leshui
2003-09-16
打赏
举报
回复
但是很灵活:)
可以自己设掉线的时间什么的
dmhorse
2003-09-16
打赏
举报
回复
这样做的话比不上用 HttpSessionBindingListener 这种方法直接
leshui
2003-09-16
打赏
举报
回复
4。还要把刷新的页面包含到所有的页面,我这里是在一个公用的top里,可以设成ifram
leshui
2003-09-16
打赏
举报
回复
我这里是这么做的:
1。在用户表里设一个是否在线和最后动作时间
2。做一个不断刷新的页面,刷新间隔可以自己设,把当前用户的最后动作时间更新为当前时间
3。统计在线用户的时候取出当前时间和最后动作时间的间隔,如果小于一个间隔就认为是在线
Rayy
2003-09-16
打赏
举报
回复
期待更好的解决方法,思路!!
squallzeng
2003-09-15
打赏
举报
回复
关注有好思路给一份!!!!
mail:squallzeng@hotmail.com
dmhorse
2003-09-15
打赏
举报
回复
Agree implement HttpSessionBindingListener
The best way.
ychunshui
2003-09-15
打赏
举报
回复
session.setMaxInactiveInterval(50); // Session有效时长,以秒为单位
如果不设session有效时间,请问如何在关闭浏览器时使session无效
wyhgg
2003-09-13
打赏
举报
回复
我做过,不很理想,
如果楼上有好办法。
给我一点思路。
wyhgg@sina.com.cn
dogcai
2003-09-13
打赏
举报
回复
谢谢楼上的,学到了很多。
Yssss1980
2003-09-13
打赏
举报
回复
上次看到的一个解答,找不到源贴
/**这是管理user信息的类
文件名为onLineUser.java
*/
import javax.servlet.http.*;
import javax.servlet.*;
import java.util.*;
public class onLineUser implements HttpSessionBindingListener {
public onLineUser(){
}
private Vector users=new Vector();
public int getCount(){
users.trimToSize();
return users.capacity();
}
public boolean existUser(String userName){
users.trimToSize();
boolean existUser=false;
for (int i=0;i<users.capacity();i++ )
{
if (userName.equals((String)users.get(i)))
{
existUser=true;
break;
}
}
return existUser;
}
public boolean deleteUser(String userName) {
users.trimToSize();
if(existUser(userName)){
int currUserIndex=-1;
for(int i=0;i<users.capacity();i++){
if(userName.equals((String)users.get(i))){
currUserIndex=i;
break;
}
}
if (currUserIndex!=-1){
users.remove(currUserIndex);
users.trimToSize();
return true;
}
}
return false;
}
public Vector getOnLineUser()
{
return users;
}
public void valueBound(HttpSessionBindingEvent e) {
users.trimToSize();
if(!existUser(e.getName())){
users.add(e.getName());
System.out.print(e.getName()+"\t 登入到系统\t"+(new Date()));
System.out.println(" 在线用户数为:"+getCount());
}else
System.out.println(e.getName()+"已经存在");
}
public void valueUnbound(HttpSessionBindingEvent e) {
users.trimToSize();
String userName=e.getName();
deleteUser(userName);
System.out.print(userName+"\t 退出系统\t"+(new Date()));
System.out.println(" 在线用户数为:"+getCount());
}
}
/////////////////////////////////////////////////////////////////////////////
<%
/**这是显示在线用户的jsp文件
文件名为onLineUser.jsp
*/
%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="onLineUser,java.util.*" %>
<jsp:useBean id="onlineuser" class="onLineUser" scope="application"/>
<html>
<head>
<title>搞定JSP在线人数</title>
</head>
<body>
<center>
<p><h1>登陆成功,欢迎您访问!</h1></p>
</center>
<% session = request.getSession(false); %>
<%
String username=request.getParameter("username");
if (onlineuser.existUser(username)){
out.println("用户<font color=red>"+username+"</font>已经登陆!");
}else{
session.setMaxInactiveInterval(50); file://Sesion有效时长,以秒为单位
session.setAttribute(username,onlineuser);
out.println("欢迎新用户:<font color=red>"+username+"</font>登陆到系统!");
}
out.println("<br>当前在线用户人数:<font color=red>"+onlineuser.getCount()+"</font><br>");
Vector vt=onlineuser.getOnLineUser();
Enumeration e = vt.elements();
out.println("在线用户列表");
out.println("<table border=1>");
out.println("<tr><td>用户名</td></tr>");
while(e.hasMoreElements()){
out.println("<tr><td>");
out.println((String)e.nextElement()+"<br>");
out.println("</td></tr>");
}
out.println("</table>");
%>
<center>
<p>elapsed制作</p>
<p> </p>
<%
out.println("<p><a href='logout.jsp?username="+username+"'>退出系统</a></p>");
%>
</center>
</body>
</html>
////////////////////////////////////////////////////////////////////////////////////
<%
/**这是用户退出的jsp文件
文件名为logout.jsp
*/
%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="onLineUser,java.util.*" %>
<jsp:useBean id="onlineuser" class="onLineUser" scope="application"/>
<html>
<head>
<title>搞定JSP在线人数</title>
</head>
<body>
<center>
<p><h1>登陆成功,欢迎您访问!</h1></p>
</center>
<%
String username=request.getParameter("username");
if(onlineuser.deleteUser(username))
out.println(username+"已经退出系统!");
else
out.println(username+"没有登陆到系统!");
%>
<center>
<p>elapsed制作</p>
<p> </p>
<p><a href="logout.jsp">退出系统</a></p>
</center>
</body>
xqi8
2003-09-13
打赏
举报
回复
up
liujiboy
2003-09-13
打赏
举报
回复
我有一种方法是用javascript在客户端断开的时候传回退出的信息,但是无法防止死机。
另一种方法是使用activex控件,或者是java applet。还有就是使用java web start构建一个胖客户端的程序。
我也期待有更好的解决方法。
ychunshui
2003-09-13
打赏
举报
回复
关注
php 判断是否
在线
,关于判断
用户
是否
在线
的问题!!!
回复
讨论
(解决方案)把session记录到数据库,同时标示出
用户
的id号,判断
用户
是否
在线
就看这个id号对应的session信息是否过期。不知道我说的对不对,欢迎楼下各位大神拍砖。去看下session的用法就明白了主要是判定...
php验证
用户
是否
在线
_关于
用户
在线
与离线的判断问题!
首先需求是做一个显示...这样就显示
在线
用户
的话就可以定时刷新一次,这种
情况
下功能是没有任何问题的,但是例外
情况
就是
用户
不点击安全退出而是直接就关闭浏览器了,那这样这个
用户
岂不是永远都
在线
了?所以我的问...
门户通专访
统计
啦!创始人章进文:
用户
的需求 我的追求
今天非常荣幸邀请到了
统计
啦!(http://www.tongji.la)创始人章进文做客门户通站长专访栏目! 采访人:一滴水 被采访人:章进文
统计
啦!创始人章进文(门户通配图) 嘉宾自我介绍:大家
php筛选数据
统计
,如何对大批量
用户
日志数据
统计
筛选啊
比如 100W
用户
现在表是这样设计的:表a 是100W
用户
基本信息(uid唯一)uid,name,地区,服务商....表b 每个
用户
有100条左右...需求:
统计
24小时段
用户
数 并且可 根据某地区 and 某服务商
统计
回复
讨论
(解决方案)24小时段...
uni
统计
、uniapp
统计
简单实现教程
<font color="#8dc63f">uniapp新增的<font color="#e03997" size="3">uni
统计
功能,类似百度
统计
功能,在<font color="#e03997" size="3">uni开发者中心</font> - <font color="#e03997" size="3">uni
统计
中查看网页...
Web 开发
81,092
社区成员
341,716
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章