System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于网络任务调度及计算机服务器领域,尤其是涉及一种批量接续方法和装置。
技术介绍
1、网络多人任务顺序调度管理中,服务器根据接续调度用户的状态顺序通知用户接续,接续过程中由于网络原因或其它不可预知原因当前计时用户脱离任务,导致接续调度任务不能继续,另一方面,服务器批量处理执行离线用户托管时,需要先遍历一级频道号,再根据频道号二级遍历用户列表,根据二级用户序号确定计时用户后生成频道通知消息,由于数据量大导致服务器执行效率低下,接续延迟,用户体验下降。
技术实现思路
1、为了解决网络多人任务顺序调度管理中正常计时用户由于网络原因掉线导致接续调度不能继续问题,以及服务器批量处理执行离线用户托管时,需要先遍历一级频道号,再根据频道号二级遍历用户列表,根据二级用户序号确定计时用户后生成频道通知消息,由于数据量大导致服务器执行效率低下,接续延迟,用户体验下降。
2、一种批量接续方法,包括:
3、构建状态表和排队表,所述状态表创建字段包括用户标识、接续序号、接续时间、接续频道号;所述排队表创建字段包括用户标识、排队序号、排队时间、排队频道号;
4、响应客户端排队请求,包括执行排队序号计算并设置所述排队时间为当前系统当前时间,其中所述排队序号计算包括根据所述排队表中获取所述排队序号的最大值+1;
5、执行接续加入任务,根据所述排队表获取状态表数据,包括根据所述排队表的每个频道的排队序号最小的用户执行第一接续公式获取所述状态表中的所述接续时间
6、执行超时用户调度任务,根据所述状态表执行超时指令获取超时接续用户列表,如果超时接续用户列表不为空,执行模拟用户指令操作;其中所述超时指令包括:“select所述用户标识from所述状态表wheretimestampdiff(second,now(),所述接续时间)between–(所述接续超时时间)and0”;其中所述模拟用户指令包括修改所述状态表的下一计时用户的所述接续时间为所述第一接续公式的计算值,所述下一计时用户由下一计时用户公式确定;
7、执行正常用户调度任务,根据所述状态表执行正常接续指令获取正常计时用户列表,所述正常计时用户用于发送客户端执行用户正常计时操作,其中所述正常接续指令包括:“select所述用户标识,所述接续时间from所述状态表where timestampdiff(second,now(),所述接续时间)>0”;
8、正常计时用户消息群发,根据所述正常计时用户列表通过消息通道发送计时用户消息到频道所有用户终端;
9、响应客户端正常计时用户的接续请求,执行下一计时用户计算,包括修改所述状态表的下一计时用户的所述接续时间为所述第一接续公式的计算值,所述下一计时用户由下一计时用户公式确定。
10、进一步的,所述下一计时用户公式包括:下一计时用户=(当前计时用户的所述接续序号+1)%频道允许最大用户数,其中所述频道允许最大用户数由配置文件获取,其中公式符号“%”为求余运算符。
11、进一步的,客户端执行用户正常计时操作包括,根据所述状态表获取所述接续时间为剩余时间,如果剩余时间>0,执行所述剩余时间发送显示终端显示并等待用户操作。
12、进一步的,消息通道包括websocket建立的网络通道。
13、进一步的,响应客户端接续排队请求还包括执行所述排队表的数据互斥保护,防止客户端并发访问时数据冲突。
14、进一步的,数据互斥保护包括使用go语言的sync.mutex完成所述数据保护操作。
15、进一步的,系统当前时间为数据库系统时间,包括通过now()指令获取。
16、进一步的,接续加入任务、超时用户调度任务、正常用户调度任务为定时器任务。
17、本专利技术还提供了一种批量接续装置,包括:
18、初始化模块:用于表格创建,包括状态表和排队表,其中所述状态表包括用户标识、接续序号、接续时间、接续频道号;其中所述排队表包括用户标识、排队序号、排队时间、排队频道号;
19、客户端排队模块,用于响应客户端加入接续的排队请求,包括根据序号计算公式获取所述排队序号,其中所述序号计算公式包括:排队序号=max(所述排队序号)+1;
20、接续加入任务模块,用于定时执行排队用户加入接续指令,并分配模拟用户;所述加入接续指令包括根据所述排队表的每个频道的排队序号最小的用户执行第一接续公式获取所述状态表中的所述接续时间并设定为计时用户,其中所述第一接续公式为:所述接续时间=系统当前时间+接续超时时间;其中所述接续超时时间由配置文件获取,所述执行接续加入任务还包括如果排队用户数不足频道允许最大用户数,增加虚拟用户插入所述状态表,其中所述频道允许最大用户数由配置文件获取;
21、超时用户调度任务模块,用于定时执行超时用户的模拟指令操作,包括根据所述状态表执行超时指令获取超时接续用户列表,如果超时接续用户列表不为空,执行模拟用户指令操作;其中所述超时指令包括:“select所述用户标识from所述状态表wheretimestampdiff(second,now(),所述接续时间)between–(所述接续超时时间)and0”;其中所述模拟用户指令包括修改所述状态表的下一计时用户的所述接续时间为所述第一接续公式的计算值,所述下一计时用户由下一计时用户公式确定;
22、正常用户调度任务模块,用于获取正常计时用户列表并群发消息到客户端,包括根据所述状态表执行正常接续指令获取正常计时用户列表,所述正常计时用户用于发送客户端执行用户正常计时操作,其中所述正常接续指令包括:“select所述用户标识,所述接续时间from所述状态表where timestampdiff(second,now(),所述接续时间)>0”;
23、消息群发模块,用于根据所述正常计时用户列表群发计时消息到客户端,包括构建websocket连接的消息通道,根据所述正常用户列表通过所述websocket消息通道发送计时消息到客户端;
24、正常计时用户接续模块,用于响应正常计时用户的接续请求,计算下一计时用户,包括执行修改所述状态表的下一计时用户的所述接续时间为所述第一接续公式的计算值,所述下一计时用户由下一计时用户公式确定。
25、进一步的,下一计时用户公式包括:下一计时用户=(当前计时用户的所述接续序号+1)%频道允许最大用户数,其中所述频道允许最大用户数由配置文件本文档来自技高网...
【技术保护点】
1.一种批量接续方法,其特征在于,包括:
2.根据权利要求1所述的批量接续方法,其特征在于,所述下一计时用户公式包括:下一计时用户=(当前计时用户的所述接续序号+1)%频道允许最大用户数,其中所述频道允许最大用户数由配置文件获取,其中公式符号“%”为求余运算符。
3.根据权利要求1所述的批量接续方法,其特征在于,所述客户端执行用户正常计时操作包括,根据所述状态表获取所述接续时间为剩余时间,如果剩余时间>0,执行所述剩余时间发送显示终端显示并等待用户操作。
4.根据权利要求1所述的批量接续方法,其特征在于,所述消息通道包括websocket建立的网络通道。
5.根据权利要求1所述的批量接续方法,其特征在于,所述响应客户端接续排队请求还包括执行所述排队表的数据互斥保护,防止客户端并发访问时数据冲突。
6.根据权利要求5所述的批量接续方法,其特征在于,所述数据互斥保护包括使用GO语言的sync.Mutex完成所述数据保护操作。
7.根据权利要求1所述的批量接续方法,其特征在于,所述系统当前时间为数据库系统时间
8.根据权利要求1所述的批量接续方法,其特征在于,所述接续加入任务、超时用户调度任务、正常用户调度任务为定时器任务。
9.一种批量接续装置,其特征在于,包括:
10.根据权利要求9所述的批量接续装置,其特征在于,所述的下一计时用户公式包括:下一计时用户=(当前计时用户的所述接续序号+1)%频道允许最大用户数,其中所述频道允许最大用户数由配置文件获取,其中公式符号“%”为求余运算符。
...【技术特征摘要】
1.一种批量接续方法,其特征在于,包括:
2.根据权利要求1所述的批量接续方法,其特征在于,所述下一计时用户公式包括:下一计时用户=(当前计时用户的所述接续序号+1)%频道允许最大用户数,其中所述频道允许最大用户数由配置文件获取,其中公式符号“%”为求余运算符。
3.根据权利要求1所述的批量接续方法,其特征在于,所述客户端执行用户正常计时操作包括,根据所述状态表获取所述接续时间为剩余时间,如果剩余时间>0,执行所述剩余时间发送显示终端显示并等待用户操作。
4.根据权利要求1所述的批量接续方法,其特征在于,所述消息通道包括websocket建立的网络通道。
5.根据权利要求1所述的批量接续方法,其特征在于,所述响应客户端接续排队请求还包括执行所述排队表的数据互斥保...
【专利技术属性】
技术研发人员:晏利平,王华军,
申请(专利权)人:贵阳朗玛信息技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。