一种网络用户状态的监测及查询方法与流程

文档序号:12692628阅读:241来源:国知局

本发明属于互联网通信技术领域,特别涉及一种实现网络管理的用户状态监测及查询方法。



背景技术:

目前,随着网络技术的飞速发展,依赖于Internet办公越来越多,为了文件携带方便,各类网络文档管理系统层出不穷,人们不再局限于只将文件存放在各自的终端电脑内。为了提高企业(单位)员工的工作效率和信息安全,大部分企业(单位)都对员工的办公文件进行一定的管控,不可避免的会需要将企业的员工对应成网络管理系统的一个账号。

我们常用的大多数文档管理系统由客户端、服务器、控制台三部分组成,它们之间往往会两两进行通信。通常,客户端想要访问服务器都是用专用的用户名密码登录到服务器,同时,管理员通过控制台管理员工对于账号的操作使用以及了解一些当前客户端的登录情况和状态。

目前对用户状态的监测是为服务器用户对象设置状态属性,通过状态属性的值标示用户的不同登录状态,同时创建Map集合类,key值为token(网络令牌:字符串),value为用户名,通过登录的时候将信息写入Map,判断时通过遍历Map判断该用户是否登录。

这种监测方法具有以下缺陷:

(1)此方法需要依赖实时维护查找数据库数据进行用户状态的变更。

(2)此方法不够快速,当服务器需要判断当前用户是否已经登录的时候,因为key值为token,这个值是登录成功后生成的唯一标示符号,value可能出现相同的用户名,查找某用户是否已经登录时不能通过key快速查找,只能全部遍历Map集合的value进行判断。

类似于一些常用的聊天软件,通常用户的状态基本包括在线、离线、忙碌等。为了实时的标示或者变更用户或客户端的某种状态,所以,服务器传递给客户端的信息是举足轻重的。由于服务器运行过程中能够利用的内存资源有限,以及网络通信过程中可能存在的信息丢失问题,我们应该尽可能的避免服务器对于系统内存的过多占用。针对日新月异的计算机技术发展,有时候客户端的网络环境是多变的,访问的服务器方式多样,这时候服务器为了识别客户端的不同意图,就需要定义许多通信接口,客户端在调用这些接口的时候传递的信息应该尽可能的精简。

其次,判断当前用户或客户端是否在线需要更高的效率,以往的通过遍历进行判断的方法在用户数极大的情况下显然是不高效的。这时,服务器必不可少的需要准确判断某个用户当前状态类型更加高效的方法,并在一定程度上管控账号登录的唯一性。

为了满足这些要求,我们需要尽可能的优化对服务器内存的使用,同时灵活的配置,不依赖于对象网络环境的一种通用解决方法,本案由此产生。



技术实现要素:

本发明的目的,在于提供一种网络用户状态的监测及查询方法,其可提高用户状态查询的速度,减小服务器内存的占用空间。

为了达成上述目的,本发明的解决方案是:

一种网络用户状态的监测方法,包括如下步骤:

步骤a1,在服务器内存中定义长度为L的二维标示数组status[][],其中,L设定为大于预期的网络用户数量,将标示数组status[][]的单元值初始化为0,单位bit;

步骤a2,在数据库表中,为每个用户分配一个唯一的整数型用户编号uid,同时定义整数型访问属性sid的n个属性状态,并将第i个属性状态设定为用户是否在线,为用户主状态,其余n-1个属性状态为次状态,0≤i≤n-1;

步骤a3,用户登录时,设定status[uid][i]=1,并根据用户的实际情况设定其余n-1个属性状态对应的标示数组status[uid][sid]的单元值;

步骤a4,用户退出登录时,将对应的status[uid][0]~status[uid][n-1]的单元值全部还原为0。

上述步骤a2中,在为用户分配用户编号uid时,从1开始递增。

上述步骤a3中,在用户登录状态下,当用户改变某个次状态时,将所有次状态中除改变的次状态外的其它状态对应的单元值先还原为0,再根据实际情况进行设置。

一种网络用户状态的查询方法,包括如下步骤:

步骤b1,在数据库表中查询用户的uid,进而调取对应的标示数组status[uid][sid];

步骤b2,根据status[uid][0]~status[uid][n-1]的单元值,判断用户的所有属性状态。

上述步骤b2中,首先判断用户uid对应的标示数组status[uid][i]是否为1,只有当status[uid][i]=1时,才继续判断其它属性状态对应的标示数组status[uid][sid]的单元值,获知用户的所有属性状态。

采用上述方案后,本发明具有以下特点:

(1)在系统平台上,服务器根据已有的用户标示来关联管理用户的其他属性状态,二进制表示信息易于机器的理解与识别;

(2)本发明具有准确性,可以快速查找某用户的状态,同时保证用户登录的唯一性;

(3)本发明具有简易性,表现在:数组操作方便易懂,因为是bit数组,所以理论上极不占用空间内存;

(4)本发明兼容性比较高,对于不同的编程语言平台均可适用,且二进制数据易于保存传递。

附图说明

图1是本发明的流程图。

具体实施方式

以下将结合附图,对本发明的技术方案及有益效果进行详细说明。

如图1所示,本发明提供一种网络用户状态的监测方法,包括如下步骤:

步骤a1,在服务器内存中定义长度为L的bit位二维标示数组status[][],其中,L设定为大于预期的网络用户数量,以满足所有用户登录服务器时的需求;将标示数组status[][]的单元值初始化为0(单位bit),采用计算机的最小单位bit,可以最大限度地减小对内存的占用;

步骤a2,在数据库表中,为每个用户分配一个唯一的整数型用户编号uid,在实际操作中可以从1开始顺序增加,同时定义整数型访问属性sid,sid具有0~n-1共n个属性状态,例如,sid为0对应是否在线(主状态),sid为1对应是否异常(次状态),sid为2对应是否忙碌(次状态)等;

步骤a3,当服务器获知某个用户已经登录,在数据库表中根据该用户的编号uid,设定对应的访问属性sid,并将sid设定为0,同时将对应的标示数组status[][]的单元值设为1,标示该用户已登录;

步骤a4,在标示数组status[uid][0]=1,用户在线的情况下,才会继续判断其它属性状态的标示数组status[uid][sid]的单元值是否为1,为1则表示用户处于对应的属性状态,为0则表示不在该属性状态;例如,在步骤a2的定义条件下,若status[uid][1]=1,表示用户异常,若status[uid][1]=0,表示用户正常;在具体实现时,当某个用户状态变更时,主动向服务器发出变更通知,同时,服务器定期扫描用户状态,从而确保用户状态的正确性;

在用户登录状态下,当用户改变某个次状态时,将status[uid][1]~status[uid][n-1]中除改变的次状态外的其它状态先还原为0,然后再将需要的状态对应设置为1,从而提高效率。

步骤a5,用户退出登录时,将对应的status[uid][0]~status[uid][n-1]的值全部还原为0。

本发明还提供一种网络用户状态的查询方法,包括如下步骤:

步骤b1,在数据库表中查询用户的uid,进而调取对应的标示数组status[uid][sid];

步骤b2,判断status[uid][0]的单元值是否为1,若为1,表示用户处在登录状态,则转步骤b3,否则用户不在线,结束查询;

步骤b3,进一步判断status[uid][1]~status[uid][n-1]的单元值,获知用户的所有属性状态。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1