在线用户状态信息跟踪及控制方法技术

技术编号:2868514 阅读:245 留言:0更新日期:2012-04-11 18:40
一种在线用户状态信息跟踪及控制方法,包含如下步骤:在系统服务器的存储器中建立内存表;实时检查是否有用户登陆服务器,当有用户登陆时,则在该内存表中增加一条该用户记录;内存表中用户记录根据客户端点击事件的是否发生而更新;如果在一固定时间段内用户的记录没有更新,则从内存表中删除该用户记录;当内存表中不存在该用户记录时,切断用户同服务器端的连接,将该用户从系统中被清除。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种服务器在线用户管理方法,尤其是指一种。
技术介绍
无论是企业信息化还是电子政务,都是建立在与后台数据库的大量的连接上的,随着系统的逐步深入和细化,对系统提出了更高的要求,例如大量用户登录到系统中,用户存在的模块和信息需要系统管理员有着实时的控制和跟踪。这种控制和跟踪,目前存在着难点,尤其是广泛使用的B/S模式的系统,服务器很难了解客户端的情况。并且,如果同时对数据库连接过多,系统的执行速度和效能将明显降低,这都是需要考虑的问题。针对这样的难点,目前在B/S系统中有一些最常见的解决方法,下面是这些方法和它们存在的一些问题错误方法一有些用户会点击做在社区或功能模块中的″退出社区″。但是有的用户比较忙或是手比较快,就会直接的关闭浏览器了。那么在程序看来此用户根本就没有退出社区。错误方法二为了这样也有的用户以关闭浏览器为标准,例如每当用户直接关闭浏览页面时,用JavaScript执行一个unload事件,跳出一个窗口,来执行更新,这也许是解决直接关闭的问题。可是没有考虑到如果因为需要看得内容太长,用户想断了线后,再好好的看看,那么当用户正好是直接断线后,看完所有内容再关闭浏览器时,跳出窗口页面的程序就等于没有执行。错误方法三使用session为例,一般的服务器中都有Session的失效时间,如IIS中为20分钟,若以Session为标准,来判断,这显然也是行不通的,结果会和错误方法二一样。另外,有些系统试图将用户信息写入数据库中,当用户每进到一个社区或者模块当中时,就更改用户的信息表,这样做当用户量突然增大,或者有的用户开多个浏览器窗口时,不仅增加了后台数据库的压力,也大大降低了系统的效率,增大了系统的响应时间。
技术实现思路
本专利技术的主要目的在于提供一种,能够不受用户退出系统方式的影响,而主动判断用户状态,使系统具有可追踪性。本专利技术的次要目的在于提供一种,能够控制用户状态,提供系统用户管理性能。为实现上述目的,本专利技术在系统内存中建立一个内存表,记录进入系统的在线用户在系统中的属性字段如用户名,用户当前所在位置,用户权限级,用户初次登录系统时间,刷新时间等等。其中,用户名是用户的唯一标识。其中,用户权限级别是事先存在服务器数据库中的,用户登陆系统时,服务器首先验证用户身份,并到数据库中查找用户的权限级别,以决定用户之后的应用权限。这个内存表的优势在于,相当于在内存中设立了一个小型数据库,也可以根据系统需要建立其他内存表,操作原理都是相同的。在客户端,装载一个刷新页面,每隔一定的时间更新一次用户名对应的用户所在时间,表明用户还在系统中。在服务器端,建立一个线程,每隔固定时间就运行一遍,然后判断当前所有用户列表中的时间间隔是否超出了规定的时间,如果超出,则将该用户从内存列表中删除,这样就可以做到检测用户是否在系统中了,而如果再单独写个用户离线后的处理,就可以解决好用户意外吊线离开后的处理。为更加清楚的说明本专利技术的
技术实现思路
,下文从几种情况的详细说明。1、当用户初次登录系统时建立的内存表如下 系统在已经建立的内存表中检验用户ID是否存在,如果存在表中,说明用户已经登录到系统中,可以根据系统需要用户开多个窗口,还是只允许用户开一个登录窗口,操作内存表。如果系统允许用户开多个登录窗口,可以在表的属性字段添加一个登录窗口累计值字段,当用户打开一定数量的窗口时,也要加以限制;如果系统不允许用户开多个窗口时,系统会从内存表中将该用户的原来的元组删除,填入新的记录。2、当用户在社区或者模块当中切换时系统将用户目前所在的社区或者模块名称ID(唯一标识)记录下来,并且系统更新写有用户记录的内存表中用户所在位置字段。3、当用户点击触发客户端任何事件时用户内存表中的用户最后刷新时刻字段被修改为当前时刻。4、当有用户违反系统操作规定,或者需要暂时屏蔽部分用户的操作时系统仅仅允许存在于内存表中的用户有功能模块的操作权,所以可以从用户内存表中查出违规或需要暂时屏蔽部分用户,将他们从内存表中删除。保证他们在客户端暂时不能操作。5、服务器端内部线程的运行首先规定一段允许用户存在系统中,又不采取任何操作的时间,即无操作时间。服务器内部线程每隔一定时间运行一次,目的是检测用户内存表中有哪些用户的最后一次刷新时刻与系统当前时间的差值超过系统容忍的无操作时间。将这样的用户从表中查出来,删除掉。以保证不必要的系统资源的浪费。6、当用户自动关闭窗口离开时利用程序捕获用户的离开事件,同时,系统调出用户内存表,将该用户从表中删除。综上所述,本专利技术具体的步骤描述如下一种,包含如下步骤a、在系统服务器的存储器中建立内存表;b、实时检查是否有用户登陆服务器,当有用户登陆时,首先验证用户身份,到服务器数据库中查找用户,并分配用户相应权限,然后在该内存表中增加一条该用户记录;c、内存表中用户记录根据客户端点击事件的是否发生而更新;d、如果在一固定时间段内用户的记录没有更新,则从内存表中删除该用户记录;规定系统中在线用户在一个段时间中(例如20分钟)没有任何客户端动作产生时,则认为该用户掉线。e、当内存表中不存在该用户记录时,切断用户同服务器端的连接,此用户在客户端界面点击任何事件都不会传送到服务器端运行,即将该用户从系统中被清除。所述的,在b步骤中,当有用户登陆时,首先检查该用户在内存表中是否已经有记录,如果存在记录则将该用户在内存表中的已有的记录删除。如果该用户在内存表中已经有记录,说明该用户已经存在系统中,由于用户多开启一个登录就会增加一条同后台服务器中数据库的连接,为了防止用户开启多余的浏览器窗口而增加服务器的运行压力,将用户在内存表中的已有的状态记录删除;所述的,在c或d步骤之后还有如下步骤,当用户在客户端有违例的动作发生时,如发表不良言论,则将用户在内存表中的已有的记录删除,从而强制控制该用户从系统中退出。所述的,其中内存表内的记录内容有用户名的唯一标识、用户当前所在位置、用户权限级别、用户初次登录系统的时刻和用户客户端的刷新时刻。所述的,在d步骤中采用一数值比较器,用于判断一固定时间(例如30分钟),段内用户的记录是否更新,一条守护线程于每一运行周期自动在后台服务器扫描存储器中的内存表记录,将“系统当前时间”减去记录中“用户客户端的刷新时刻”得到的差值与设定的固定时间段(例如30分钟)输入该数值比较器进行比较,如果该差值大于或等于该设定的固定时间段,则判断为一固定时间段内用户的记录没有更新;如果该差值小于该设定的固定时间段,则判断为一固定时间段内用户的记录有更新,则用户记录继续保留在内存表中。所述的,其中c步骤中所述的更新的记录有如果用户仅仅在本社区有点击事件,用户的记录中用户客户端的刷新时刻被更新为点击事件发生的时刻;如果用户穿梭到了其他的社区,用户的记录中用户客户端的刷新时刻被更新为点击事件发生的时刻,并且,用户的记录中用户当前所在位置,被更新为当前的社区位置。本专利技术克服了B/S结构的系统难以控制和跟踪客户端的状态信息的特点,利用将用户状态信息写入内存虚表而不是写入数据库的机制,大大降低了系统访问数据库的次数,提高了系统的效率。利用对系统内存中用户表元组的增、删、改、查,来直接掌握和控制客户端用户的状态信息,使系统具本文档来自技高网
...

【技术保护点】
一种在线用户状态信息跟踪及控制方法,其特征在于,包含如下步骤:a、在系统服务器的存储器中建立内存表;b、实时检查是否有用户登陆服务器,当有用户登陆时,首先验证用户身份,到服务器数据库中查找用户,并分配用户相应权限,然后在该内 存表中增加一条该用户记录;c、内存表中用户记录根据客户端点击事件的是否发生而更新;d、如果在一固定时间段内用户的记录没有更新,则从内存表中删除该用户记录;e、当内存表中不存在该用户记录时,切断用户同服务器端的连接,将 该用户从系统中被清除。

【技术特征摘要】

【专利技术属性】
技术研发人员:蒋晓慈李东崔长轩
申请(专利权)人:联想北京有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利