当前位置: 技术问答>java相关
BBS中的在线人数如何知道?
来源: 互联网 发布时间:2015-06-09
本文导语: BBS中的在线人数如何知道? 如果用户将IE关掉而没有退出BBS,怎么办? | 我做过一个教学平台,要求老师要精确知道学生的在线情况和详细的上下线时间 我想你的问题是这样写的: 在客户端的web做一个...
BBS中的在线人数如何知道?
如果用户将IE关掉而没有退出BBS,怎么办?
如果用户将IE关掉而没有退出BBS,怎么办?
|
我做过一个教学平台,要求老师要精确知道学生的在线情况和详细的上下线时间
我想你的问题是这样写的:
在客户端的web做一个隐藏桢没30秒刷新一次(可根据你的精确度设计),在他登陆的时候要把当前的时间和他的id写如数据库,以后每次刷新的时候更新时间,当有新的用户登陆的时候把数据库里每个id的时间和当前的时间做比较,如果大于一个时间(如1分钟)说明他1分钟没有刷新了,把他从在线列表中删除,他最后留下的时间就是他的离开时间。
这个方法的缺陷就是你的访问量要有足够的连续性,比如你今天只有一个人登陆了1分钟,那么由于没有新的用户登陆把他删除,那么他一直在线
当然也有一个解决的办法就是你可以做一个刷新在线名单的按钮,让用户自己刷新
还有一个方法我没有采用就是从系统(服务器上)运行做刷新的服务页面,做新用户登陆时的工作(把数据库里每个id的时间和当前的时间做比较,如果大于一个时间(如1分钟)说明他1分钟没有刷新了,把他从在线列表中删除,他最后留下的时间就是他的离开时间。)
这样所有的用户离开的时间都会小于你设的刷新参数(如30秒)不过觉得这样很浪费资源也没有必要。
看你需要了,希望以上的东东对你有一点启发
我想你的问题是这样写的:
在客户端的web做一个隐藏桢没30秒刷新一次(可根据你的精确度设计),在他登陆的时候要把当前的时间和他的id写如数据库,以后每次刷新的时候更新时间,当有新的用户登陆的时候把数据库里每个id的时间和当前的时间做比较,如果大于一个时间(如1分钟)说明他1分钟没有刷新了,把他从在线列表中删除,他最后留下的时间就是他的离开时间。
这个方法的缺陷就是你的访问量要有足够的连续性,比如你今天只有一个人登陆了1分钟,那么由于没有新的用户登陆把他删除,那么他一直在线
当然也有一个解决的办法就是你可以做一个刷新在线名单的按钮,让用户自己刷新
还有一个方法我没有采用就是从系统(服务器上)运行做刷新的服务页面,做新用户登陆时的工作(把数据库里每个id的时间和当前的时间做比较,如果大于一个时间(如1分钟)说明他1分钟没有刷新了,把他从在线列表中删除,他最后留下的时间就是他的离开时间。)
这样所有的用户离开的时间都会小于你设的刷新参数(如30秒)不过觉得这样很浪费资源也没有必要。
看你需要了,希望以上的东东对你有一点启发
|
用application取在线人数。
在HTML中加入function xx(){
window.open("close","ss.htm","width=10",height="10",top=2000,left=2000);}。然后在ss.htm中,用application.removeArribute("xxxx"),进而取出在线人数!
在HTML中加入function xx(){
window.open("close","ss.htm","width=10",height="10",top=2000,left=2000);}。然后在ss.htm中,用application.removeArribute("xxxx"),进而取出在线人数!
|
saintKnight(saintKnight)
说的没错。我就是用这种方法统计的。
其实,可以设置一个主main页面。当用户关闭这个主页面时,系统自动在
_parent 页面 Load 一个窗口,我的是autoClose.asp,此页面exit()方法放结束回话的过程。
autoClose.asp
function exit()
{
window.close();
}
说的没错。我就是用这种方法统计的。
其实,可以设置一个主main页面。当用户关闭这个主页面时,系统自动在
_parent 页面 Load 一个窗口,我的是autoClose.asp,此页面exit()方法放结束回话的过程。
autoClose.asp
function exit()
{
window.close();
}
|
用类的一个static field来记住在线总人数。在session开始(例如login成功)时加1,在session结束时减1。
对于直接关闭IE,楼上讲的也是一种方法。不过要注意客户同一session开了多个窗口的处理。
如果要不比较准确,就把session timeout设得短一点,不过这样也会有不便。作为补充,可以再隐藏的Frame里面隔一定时间发一下请求来刷新session,避免timeout。
对于直接关闭IE,楼上讲的也是一种方法。不过要注意客户同一session开了多个窗口的处理。
如果要不比较准确,就把session timeout设得短一点,不过这样也会有不便。作为补充,可以再隐藏的Frame里面隔一定时间发一下请求来刷新session,避免timeout。
|
to wangxian()
如果用户将IE关掉而没有退出BBS,怎么办?
同意zijianyi的说法,也就是编个程序去刷新在线的用户
防止发呆过久的方法,我有个极其简单的例子,或许有些帮助
要的话mail you!
呵呵!
如果用户将IE关掉而没有退出BBS,怎么办?
同意zijianyi的说法,也就是编个程序去刷新在线的用户
防止发呆过久的方法,我有个极其简单的例子,或许有些帮助
要的话mail you!
呵呵!
|
在线人数的又一种想法:
如果您用apache做web服务器的时候,可以考虑读读log文件,看看在线人数.
如果您用apache做web服务器的时候,可以考虑读读log文件,看看在线人数.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。