CN109714249B - 一种小程序消息的推送方法及相关装置 - Google Patents

一种小程序消息的推送方法及相关装置 Download PDF

Info

Publication number
CN109714249B
CN109714249B CN201811620813.5A CN201811620813A CN109714249B CN 109714249 B CN109714249 B CN 109714249B CN 201811620813 A CN201811620813 A CN 201811620813A CN 109714249 B CN109714249 B CN 109714249B
Authority
CN
China
Prior art keywords
users
pushed
user
group
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811620813.5A
Other languages
English (en)
Other versions
CN109714249A (zh
Inventor
张翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xi'an Yunshang Chusheng Network Technology Co.,Ltd.
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201811620813.5A priority Critical patent/CN109714249B/zh
Publication of CN109714249A publication Critical patent/CN109714249A/zh
Application granted granted Critical
Publication of CN109714249B publication Critical patent/CN109714249B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种小程序消息的推送方法及相关装置,用于提高小程序消息推送的效率。本申请实施例方法包括:根据用户的触发指令获得用户的openID,并将用户的openID存储至数据库中,用户与用户的openID一一对应;在数据库中确定满足推送条件的待推送用户,并获得待推送用户的用户数量;根据用户数量确定创建go routine的数量;根据go routine的数量对待推送用户进行分组,各go routine对应一个分组,各分组包括至少一个待推送用户;通过各go routine并行读取对应的分组内的用户信息,用户信息包括待推送用户的openID和更新记录时间;按照各分组的顺序,根据更新记录时间依次获取各分组中待推送用户上报的formID,以向各分组中待推送用户推送小程序消息。

Description

一种小程序消息的推送方法及相关装置
技术领域
本申请涉及开发平台领域,尤其涉及一种小程序消息的推送方法及相关装置。
背景技术
随着通信网络的不断发展,用户终端上的聊天工具如微信、QQ等的功能也越来越齐全,例如微信上的小程序功能,便受到用户的广泛欢迎。现有技术中,小程序消息的推送逻辑是按顺序依次推送每一个用户,推送效率很低。当推送的用户量级较大时,全部推送完毕可能消耗几个小时,无法推送对实时性要求很高的消息,并且在推送过程中无法根据需要,来终止推送定时任务。
因此,如何更有效率的推送微信小程序的消息,是当前一个非常值得解决的问题。
发明内容
本申请实施例提供了一种小程序消息的推送方法及相关装置,用于提高小程序消息的推送效率。
本申请实施例的第一方面提供了一种小程序消息的推送方法,包括:根据用户的触发指令获得所述用户的openID,并将所述用户的openID存储至数据库中,所述用户与所述用户的openID一一对应;在所述数据库中确定满足推送条件的待推送用户,并获得所述待推送用户的用户数量;根据所述用户数量确定创建go routine的数量;根据所述goroutine的数量对所述待推送用户进行分组,各go routine对应一个分组,所述各分组包括至少一个待推送用户;通过所述各go routine并行读取对应的分组内的用户信息,所述用户信息包括所述待推送用户的openID和更新记录时间;按照所述各分组的顺序,根据所述更新记录时间依次获取所述各分组中待推送用户上报的formID,以向所述各分组中待推送用户推送小程序消息。
在一种可能的实施例中,所述在所述数据库中确定满足推送条件的待推送用户包括:确定所述数据库中各用户在第一预设时间段内使用所述小程序的频率;将使用所述小程序的频率大于预设数值的用户确定为所述待推送用户。
在一种可能的实施例中,所述根据所述用户数量确定创建go routine的数量包括:根据所述用户数量的量级在预设的量级-读取个数表格中确定与所述用户数量的量级对应的目标读取个数,所述目标读取个数为所述各go routine读取用户信息的个数;根据所述用户数量和所述目标读取个数确定所述go routine的数量。
在一种可能的实施例中,所述根据所述用户数量和所述目标读取个数确定所述goroutine的数量包括:将所述用户数量与所述目标读取个数做除法运算,得到商值;当所述商值为整数时,将所述商值确定为所述go routine的数量;当所述商值不为整数时,将所述商值的整数位加1作为所述go routine的数量。
在一种可能的实施例中,所述根据所述go routine的数量对所述待推送用户进行分组包括:将所述待推送用户分为N组分组,并根据序号对所述N组分组进行标识,得到分组集合{分组0,分组1…分组N-1},所述N为所述go routine的数量,其中,所述分组0至所述分组N-2中的待推送用户的数目均为所述目标读取个数。
在一种可能的实施例中,所述方法还包括:定时在所述数据库中确定第二预设时间段内未上报过formID的用户;将所述未上报过formID的用户从所述数据库中清除。
在一种可能的实施例中,所述按照所述各分组的顺序,根据所述更新记录时间依次获取所述待推送用户上报的formID,以向所述待推送用户推送小程序消息之后,所述方法还包括:若向所述待推送用户推送所述小程序消息失败,则生成并存储错误日志,所述错误日志包括发生错误处的上下文信息,所述上下文信息用于确定推送失败原因。
本申请实施例的第二方面提供了一种服务器,包括:获得单元,用于根据用户的触发指令获得所述用户的openID,并将所述用户的openID存储至数据库中,所述用户与所述用户的openID一一对应;确定单元,用于在所述数据库中确定满足推送条件的待推送用户,并获得所述待推送用户的用户数量;根据所述用户数量确定创建go routine的数量;分组单元,用于根据所述go routine的数量对所述待推送用户进行分组,各go routine对应一个分组,所述各分组包括至少一个待推送用户;读取单元,用于通过所述各go routine并行读取对应的分组内的用户信息,所述用户信息包括所述待推送用户的openID和更新记录时间;推送单元,用于按照所述各分组的顺序,根据所述更新记录时间依次获取所述各分组中待推送用户上报的formID,以向所述各分组中待推送用户推送小程序消息。
本申请第三方面提供了一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如上述任意一项所述的方法的步骤。
本申请第四方面提供了一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如上述任意一项所述的方法的步骤。
从以上技术方案可以看出,本申请实施例具有以下优点:根据用户的触发指令获得所述用户的openID,并将所述用户的openID存储至数据库中,所述用户与所述用户的openID一一对应;在所述数据库中确定满足推送条件的待推送用户,并获得所述待推送用户的用户数量;根据所述用户数量确定创建go routine的数量;根据所述go routine的数量对所述待推送用户进行分组,各go routine对应一个分组,所述各分组包括至少一个待推送用户;通过所述各go routine并行读取对应的分组内的用户信息,所述用户信息包括所述待推送用户的openID和更新记录时间;按照所述各分组的顺序,根据所述更新记录时间依次获取所述各分组中待推送用户上报的formID,以向所述各分组中待推送用户推送小程序消息。本申请实施例中,通过各go routine并行读取各个分组的用户信息,并同时向各个分组的待推送用户推送小程序消息,相对于现有技术中依次推送每一个用户,提高了小程序消息推送的效率。
附图说明
图1为本申请实施例提供的一种小程序消息的推送方法的流程图;
图2为本申请实施例提供的一种可能的服务器的结构示意图;
图3为本申请实施例提供的一种可能的电子设备的硬件结构示意图;
图4为本申请实施例提供的另一可能的计算机可读存储介质的硬件结构示意图。
具体实施方式
本申请实施例提供了一种小程序消息的推送方法及相关装置,用于提高小程序消息推送的效率。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,为本申请实施例提供的一种小程序消息的推送方法的流程图,具体包括:
101、根据用户的触发指令获得用户的openID,并将用户的openID存储至数据库中;
首先,为了更好的理解本申请提供的方案,以下将对几个词语进行解释说明:
openID可以理解为是网站上或应用中唯一对应用户身份的标识,网站或应用可将此ID进行存储,便于用户下次登录时辨识其身份,或将其与用户在网站上或应用中的原有账号进行绑定;formID,顾名思义,就是表单id,是在小程序页面表单提交的过程中可以获取到的一串数字或者随机英文字母数字的码,通过这种方式获取到的表单id可以给对应用户(表单提交人)发送一条模板信息,需要说明的是,formID只能由用户触发表单提交操作产生,故前端需要将每次产生的formID发送至后端,由后端保存并在适当时候调用微信接口向用户发送模板消息,且formID有有效期,例如7天,且只能用一次,实际应用中,为了控制访问数量,可以限制用户即同一个openId一分钟内上报formID次数不超过10次;goroutine是Go并行设计的核心,goroutine其实可以理解为就是线程,但是它比线程更小,十几个go routine可能体现在底层就是五六个线程,Go语言内部帮助这些goroutine之间的内存共享。执行go routine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。Goroutine具有易用、高效和轻便等优点。
本申请实施例中,根据用户的触发指令获得用户的openID,并将用户的openID存储至数据库中,例如,用户在登录微信小程序时,则获得该用户的openID,并将该openID进行存储,以便用户下次登录时识别其身份。其中,可通过get()函数获得用户的openID,并通过save()函数存储该用户的openID,具体此处不再赘述。
102、在数据库中确定满足推送条件的待推送用户,并获得待推送用户的用户数量;
数据库中存储有登录过该微信小程序的用户的openID,根据预设的推送条件,在数据库中确定满足该推送条件的待推送用户,并确定该待推送用户的用户数量,可以理解的是,一个openID对应一个用户。例如,获得各用户在第一预设时间段内使用该小程序的频率,若频率大于预设数值,则认为满足推送条件,故将使用该微信小程序的频率大于预设数值的用户确定为待推送用户;或者,确定用户在监控时间段内是否使用该小程序,若是,则将该用户确定为待推送用户,例如,用户通过微信小程序进行打卡,只有在第一天打过卡的用户才会在第二天接收到推送消息,故判断在监控时间段如第一天的0:00到24:00用户是否产生过打卡记录,若产生过,则该用户即为要推送消息的用户即待推送用户。可以理解的是,实际应用中,推送条件为用户根据小程序的需求设置,即推送条件可以有多种,具体此处不做限定。
在确定满足推送条件的待推送用户后,确定并存储该待推送用户的用户数量。
103、根据用户数量确定创建go routine的数量;
在获得待推送用户的用户数量后,根据用户数量确定创建go routine的数量。具体地,根据用户数量的量级在预设的量级-读取个数表格中确定与用户数量的量级对应的目标读取个数,目标读取个数为所述各go routine读取用户信息的个数;根据用户数量和目标读取个数确定go routine的数量,其中,根据用户数量和目标读取个数确定goroutine的数量的方式具体可以为将用户数量与目标读取个数做除法运算,得到商值;当商值为整数时,将商值确定为go routine的数量;当商值不为整数时,将商值的整数位加1作为go routine的数量。本申请实施例中,为便于理解,假设预设的量级-读取个数表格如表1所示:
表1
用户数量 读取个数
≤1000 100
≤50000 1000
≤100000 2000
>100000 10000
若用户数量为84200,则根据该用户数量的量级找出每个go routine的读取个数即目标读取个数为2000,则为了得到go routine的数量,84200/2000=42.1,42.1不为整数,则go routine的数量即为42+1=43,即可以理解为有42个go routine读取用户信息的个数为2000,有1个go routine读取用户信息的个数为200;可以理解的是,若用户数量为84000,则go routine的数量为42。
104、根据go routine的数量对待推送用户进行分组;
在确定了go routine的数量后,根据该go routine的数量对待推送用户进行分组。具体地,将待推送用户分为N组分组,并根据序号对N组分组进行标识,得到分组集合{分组0,分组1…分组N-1},其中N为go routine的数量,且,分组0至分组N-2中的待推送用户的数目均为目标读取个数。例如,如表1所示,假设待推送用户的数量为84200时,则有goroutine的数量为43,即N=43,则将待推送用户分为43个组{分组0,分组1,…,分组41,分组42},其中分组0~分组41中待推送用户的数量为2000,分组42中待推送用户的数量为200,因此实现了对待推送用户的分组。需要说明的是,针对每个组中待推送用户的选择,可以为在数据库中所有的待推送用户中随机选择,也可以为根据待推送用户的openID存储至该数据库的时间,由晚到早顺序选择,具体此处不做限定。
105、通过各go routine并行读取对应的分组内的用户信息;
在根据go routine的数量对待推送用户进行分组后,每个go routine并行读取对应的分组内的用户信息,其中该用户信息包括待推送用户的openID和更新记录时间,其中,该更新记录时间用于获取待推送用户上报的formID,其中上报的该formID可以包括多个,例如实际应用中,为了控制访问数量以及防止恶意请求,可以限制待推送用户一分钟内上报formID次数不超过10次,如5-7次。由于formID具有有效期例如7天,且只能使用一次,因此需要进行动态维护,保证在推送的时候,有能使用的formID进行消息的推送。
106、按照各分组的顺序,根据更新记录时间依次获取各分组中待推送用户上报的formID,以向各分组中待推送用户推送小程序消息。
在对待推送用户进行分组后,按照更新记录时间依次获取各分组中待推送用户上报的formID,并根据获取到的formID向各分组中待推送用户推送小程序消息。比如创建1000个go routine,每个go routine推送100条小程序消息,则100个go routine可以同时进行推送,即第一个go routine向第1-100个待推送用户分别推送消息,第二个goroutine向第101-200个待推送用户分别推送消息……。需要说明的是,需要等待每个go routine都读取完毕对应分组中的用户的formID后进行推送数量汇总,并回写到数据库中提供运营查询。
需要说明的是,由于小程序推送业务的特殊性,推送的用户即待推送用户是一直动态变化的,因此实际应用中,可以通过直接更换推送用户数据源来实现待推送用户的变化。
另外,本申请实施例中,若小程序消息推送失败,则生成并存储错误日志,其中错误日志包括发生错误处的上下文信息,使得工作人员通过该上下文信息能确定推送失败原因。
可选的,本申请实施例中,定时在数据库中确定第二预设时间段内未上报过formID的用户;将未上报过formID的用户从数据库中清除,以减少无效推送的数量。
可选的,本申请实施例中,推送服务如果因为异常错误造成服务推出,会自动进行3次快速重启,如果重启失败会发送报警邮件,使得工作人员可以进行手动重启。
可选的,本申请实施例中,还可自动处理遗留的垃圾数据,例如过期用户数据会每天定时进行清理。
上面从基于一种小程序消息的推送方法的角度对本申请实施例进行了描述,下面从服务器的角度对本申请实施例进行描述。
请参阅图2,图2为本申请实施例提供的一种可能的服务器的实施例示意图,其中,该服务器具体包括:
获得单元201,用于根据用户的触发指令获得所述用户的openID,并将所述用户的openID存储至数据库中,所述用户与所述用户的openID一一对应;
确定单元202,用于在所述数据库中确定满足推送条件的待推送用户,并获得所述待推送用户的用户数量;根据所述用户数量确定创建go routine的数量;
分组单元203,用于根据所述go routine的数量对所述待推送用户进行分组,各goroutine对应一个分组,所述各分组包括至少一个待推送用户;
读取单元204,用于通过所述各go routine并行读取对应的分组内的用户信息,所述用户信息包括所述待推送用户的openID和更新记录时间;
推送单元205,用于按照所述各分组的顺序,根据所述更新记录时间依次获取所述各分组中待推送用户上报的formID,以向所述各分组中待推送用户推送小程序消息。
在一种可能的实施例中,所述确定单元202具体包括:确定所述数据库中各用户在第一预设时间段内使用所述小程序的频率;将使用所述小程序的频率大于预设数值的用户确定为所述待推送用户。
在一种可能的实施例中,所述确定单元202具体包括:根据所述用户数量的量级在预设的量级-读取个数表格中确定与所述用户数量的量级对应的目标读取个数,所述目标读取个数为所述各go routine读取用户信息的个数;根据所述用户数量和所述目标读取个数确定所述go routine的数量。
在一种可能的实施例中,所述确定单元202具体包括:将所述用户数量与所述目标读取个数做除法运算,得到商值;当所述商值为整数时,将所述商值确定为所述go routine的数量;当所述商值不为整数时,将所述商值的整数位加1作为所述go routine的数量。
在一种可能的实施例中,所述分组单元203具体包括:将所述待推送用户分为N组分组,并根据序号对所述N组分组进行标识,得到分组集合{分组0,分组1…分组N-1},所述N为所述go routine的数量,其中,所述分组0至所述分组N-2中的待推送用户的数目均为所述目标读取个数。
在一种可能的实施例中,所述确定单元202还包括:定时在所述数据库中确定第二预设时间段内未上报过formID的用户;将所述未上报过formID的用户从所述数据库中清除。
在一种可能的实施例中,所述获得单元201还包括:若向所述待推送用户推送所述小程序消息失败,则生成并存储错误日志,所述错误日志包括发生错误处的上下文信息,所述上下文信息用于确定推送失败原因。
请参阅图3,图3为本申请实施例提供的电子设备的实施例示意图。
如图3所示,本申请实施例提供了一种电子设备,包括存储器310、处理器320及存储在存储器320上并可在处理器320上运行的计算机程序311,处理器320执行计算机程序311时实现以下步骤:根据用户的触发指令获得所述用户的openID,并将所述用户的openID存储至数据库中,所述用户与所述用户的openID一一对应;在所述数据库中确定满足推送条件的待推送用户,并获得所述待推送用户的用户数量;根据所述用户数量确定创建goroutine的数量;根据所述go routine的数量对所述待推送用户进行分组,各go routine对应一个分组,所述各分组包括至少一个待推送用户;通过所述各go routine并行读取对应的分组内的用户信息,所述用户信息包括所述待推送用户的openID和更新记录时间;按照所述各分组的顺序,根据所述更新记录时间依次获取所述各分组中待推送用户上报的formID,以向所述各分组中待推送用户推送小程序消息。
可选的,在一种可能的实施例中,所述处理器320具体用于:确定所述数据库中各用户在第一预设时间段内使用所述小程序的频率;将使用所述小程序的频率大于预设数值的用户确定为所述待推送用户。
可选的,在一种可能的实施例中,所述处理器320具体用于:根据所述用户数量的量级在预设的量级-读取个数表格中确定与所述用户数量的量级对应的目标读取个数,所述目标读取个数为所述各go routine读取用户信息的个数;根据所述用户数量和所述目标读取个数确定所述go routine的数量。
可选的,在一种可能的实施例中,所述处理器320具体用于:将所述用户数量与所述目标读取个数做除法运算,得到商值;当所述商值为整数时,将所述商值确定为所述goroutine的数量;当所述商值不为整数时,将所述商值的整数位加1作为所述go routine的数量。
可选的,在一种可能的实施例中,所述处理器320具体用于:将所述待推送用户分为N组分组,并根据序号对所述N组分组进行标识,得到分组集合{分组0,分组1…分组N-1},所述N为所述go routine的数量,其中,所述分组0至所述分组N-2中的待推送用户的数目均为所述目标读取个数。
可选的,在一种可能的实施例中,所述处理器320还用于:定时在所述数据库中确定第二预设时间段内未上报过formID的用户;将所述未上报过formID的用户从所述数据库中清除。
可选的,在一种可能的实施例中,所述处理器320还用于:若向所述待推送用户推送所述小程序消息失败,则生成并存储错误日志,所述错误日志包括发生错误处的上下文信息,所述上下文信息用于确定推送失败原因。
由于本实施例所介绍的电子设备为实施本申请实施例中一种服务器所采用的设备,故而基于本申请实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍,只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
请参阅图4,图4为本申请实施例提供的一种计算机可读存储介质的实施例示意图。
如图4所示,本实施例提供了一种计算机可读存储介质400,其上存储有计算机程序411,该计算机程序411被处理器执行时实现如下步骤:根据用户的触发指令获得所述用户的openID,并将所述用户的openID存储至数据库中,所述用户与所述用户的openID一一对应;在所述数据库中确定满足推送条件的待推送用户,并获得所述待推送用户的用户数量;根据所述用户数量确定创建go routine的数量;根据所述go routine的数量对所述待推送用户进行分组,各go routine对应一个分组,所述各分组包括至少一个待推送用户;通过所述各go routine并行读取对应的分组内的用户信息,所述用户信息包括所述待推送用户的openID和更新记录时间;按照所述各分组的顺序,根据所述更新记录时间依次获取所述各分组中待推送用户上报的formID,以向所述各分组中待推送用户推送小程序消息。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:确定所述数据库中各用户在第一预设时间段内使用所述小程序的频率;将使用所述小程序的频率大于预设数值的用户确定为所述待推送用户。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:根据所述用户数量的量级在预设的量级-读取个数表格中确定与所述用户数量的量级对应的目标读取个数,所述目标读取个数为所述各go routine读取用户信息的个数;根据所述用户数量和所述目标读取个数确定所述go routine的数量。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:将所述用户数量与所述目标读取个数做除法运算,得到商值;当所述商值为整数时,将所述商值确定为所述go routine的数量;当所述商值不为整数时,将所述商值的整数位加1作为所述go routine的数量。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体用于实现如下步骤:将所述待推送用户分为N组分组,并根据序号对所述N组分组进行标识,得到分组集合{分组0,分组1…分组N-1},所述N为所述go routine的数量,其中,所述分组0至所述分组N-2中的待推送用户的数目均为所述目标读取个数。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时还用于实现如下步骤:定时在所述数据库中确定第二预设时间段内未上报过formID的用户;将所述未上报过formID的用户从所述数据库中清除。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时还用于实现如下步骤:若向所述待推送用户推送所述小程序消息失败,则生成并存储错误日志,所述错误日志包括发生错误处的上下文信息,所述上下文信息用于确定推送失败原因。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。

Claims (8)

1.一种小程序消息的推送方法,其特征在于,包括:
根据用户的触发指令获得所述用户的openID,并将所述用户的openID存储至数据库中,所述用户与所述用户的openID一一对应;所述openID是网站上或应用中唯一对应用户身份的标识;
在所述数据库中确定满足推送条件的待推送用户,并获得所述待推送用户的用户数量;
根据所述用户数量确定创建go routine的数量;所述gor outine为线程;
根据所述go routine的数量对所述待推送用户进行分组,各go routine对应一个分组,所述各分组包括至少一个待推送用户;
通过所述各go routine并行读取对应的分组内的用户信息,所述用户信息包括所述待推送用户的openID和更新记录时间;
按照所述各分组的顺序,根据所述更新记录时间依次获取所述各分组中待推送用户上报的formID,以向所述各分组中待推送用户推送小程序消息;所述formID是表单的id;
所述根据所述用户数量确定创建go routine的数量包括:根据所述用户数量的量级在预设的量级-读取个数表格中确定与所述用户数量的量级对应的目标读取个数,所述目标读取个数为所述各go routine读取用户信息的个数;根据所述用户数量和所述目标读取个数确定所述go routine的数量;
所述根据所述go routine的数量对所述待推送用户进行分组包括:将所述待推送用户分为N组分组,并根据序号对所述N组分组进行标识,得到分组集合{分组0,分组1...分组N-1},所述N为所述go routine的数量,其中,所述分组0至所述分组N-2中的待推送用户的数目均为所述目标读取个数。
2.根据权利要求1所述的方法,其特征在于,所述在所述数据库中确定满足推送条件的待推送用户包括:
确定所述数据库中各用户在第一预设时间段内使用所述小程序的频率;
将使用所述小程序的频率大于预设数值的用户确定为所述待推送用户。
3.根据权利要求1所述的方法,其特征在于,所述根据所述用户数量和所述目标读取个数确定所述go routine的数量包括:
将所述用户数量与所述目标读取个数做除法运算,得到商值;
当所述商值为整数时,将所述商值确定为所述go routine的数量;
当所述商值不为整数时,将所述商值的整数位加1作为所述go routine的数量。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
定时在所述数据库中确定第二预设时间段内未上报过formID的用户;
将所述未上报过formID的用户从所述数据库中清除。
5.根据权利要求1所述的方法,其特征在于,所述按照所述各分组的顺序,根据所述更新记录时间依次获取所述待推送用户上报的formID,以向所述待推送用户推送小程序消息之后,所述方法还包括:
若向所述待推送用户推送所述小程序消息失败,则生成并存储错误日志,所述错误日志包括发生错误处的上下文信息,所述上下文信息用于确定推送失败原因。
6.一种用于推送小程序消息的服务器,其特征在于,包括:
获得单元,用于根据用户的触发指令获得所述用户的openID,并将所述用户的openID存储至数据库中,所述用户与所述用户的openID一一对应;所述openID是网站上或应用中唯一对应用户身份的标识;
确定单元,用于在所述数据库中确定满足推送条件的待推送用户,并获得所述待推送用户的用户数量;根据所述用户数量确定创建go routine的数量;所述gor outine为线程;
分组单元,用于根据所述go routine的数量对所述待推送用户进行分组,各goroutine对应一个分组,所述各分组包括至少一个待推送用户;
读取单元,用于通过所述各go routine并行读取对应的分组内的用户信息,所述用户信息包括所述待推送用户的openID和更新记录时间;
推送单元,用于按照所述各分组的顺序,根据所述更新记录时间依次获取所述各分组中待推送用户上报的formID,以向所述各分组中待推送用户推送小程序消息,所述formID是表单的id;
所述确定单元还用于:根据所述用户数量的量级在预设的量级-读取个数表格中确定与所述用户数量的量级对应的目标读取个数,所述目标读取个数为所述各go routine读取用户信息的个数;根据所述用户数量和所述目标读取个数确定所述go routine的数量;
所述分组单元还用于:将所述待推送用户分为N组分组,并根据序号对所述N组分组进行标识,得到分组集合{分组0,分组1...分组N-1},所述N为所述go routine的数量,其中,所述分组0至所述分组N-2中的待推送用户的数目均为所述目标读取个数。
7.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-5任意一项所述的方法。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如权利要求1-5任意一项所述的方法。
CN201811620813.5A 2018-12-28 2018-12-28 一种小程序消息的推送方法及相关装置 Active CN109714249B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811620813.5A CN109714249B (zh) 2018-12-28 2018-12-28 一种小程序消息的推送方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811620813.5A CN109714249B (zh) 2018-12-28 2018-12-28 一种小程序消息的推送方法及相关装置

Publications (2)

Publication Number Publication Date
CN109714249A CN109714249A (zh) 2019-05-03
CN109714249B true CN109714249B (zh) 2021-09-07

Family

ID=66258927

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811620813.5A Active CN109714249B (zh) 2018-12-28 2018-12-28 一种小程序消息的推送方法及相关装置

Country Status (1)

Country Link
CN (1) CN109714249B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112328334B (zh) * 2020-10-30 2022-05-17 腾讯科技(深圳)有限公司 基于消息互动的打卡方法、设备及计算机可读存储介质
CN112650606B (zh) * 2020-12-30 2023-09-01 北京奇艺世纪科技有限公司 一种消息处理方法、装置、系统、电子设备及存储介质
CN115225917B (zh) * 2021-04-15 2024-08-27 北京字节跳动网络技术有限公司 一种录音推流方法、装置、设备及介质
CN115292472B (zh) * 2022-10-09 2022-12-30 四川师范大学 一种小程序消息的推送方法以及系统
CN116385073A (zh) * 2023-02-24 2023-07-04 中电金信软件有限公司 信息发送方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101086710A (zh) * 2006-06-06 2007-12-12 学校法人早稻田大学 面向异种多处理器的全局编译程序
CN105472400A (zh) * 2015-12-24 2016-04-06 Tcl集团股份有限公司 一种消息推送方法及系统
CN107688503A (zh) * 2017-09-07 2018-02-13 北京奇艺世纪科技有限公司 一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备
CN108040117A (zh) * 2017-12-22 2018-05-15 家园网络科技有限公司 信息推送方法及装置
CN108093060A (zh) * 2017-12-26 2018-05-29 陈占辉 一种智能家居控制后台系统消息的推送方法
CN108632140A (zh) * 2018-04-22 2018-10-09 厦门声连网信息科技有限公司 一种基于小程序的声音处理系统、方法及服务器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0326915D0 (en) * 2003-11-19 2003-12-24 Ibm A method and system for updating/reloading the content of pages browsed over a network
EP3261315A1 (en) * 2016-06-23 2017-12-27 Telefonica Digital España, S.L.U. Accelarating fall-back call establisment with push notifications

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101086710A (zh) * 2006-06-06 2007-12-12 学校法人早稻田大学 面向异种多处理器的全局编译程序
CN105472400A (zh) * 2015-12-24 2016-04-06 Tcl集团股份有限公司 一种消息推送方法及系统
CN107688503A (zh) * 2017-09-07 2018-02-13 北京奇艺世纪科技有限公司 一种基于ActiveMQ数据总线的消息处理方法、装置及电子设备
CN108040117A (zh) * 2017-12-22 2018-05-15 家园网络科技有限公司 信息推送方法及装置
CN108093060A (zh) * 2017-12-26 2018-05-29 陈占辉 一种智能家居控制后台系统消息的推送方法
CN108632140A (zh) * 2018-04-22 2018-10-09 厦门声连网信息科技有限公司 一种基于小程序的声音处理系统、方法及服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Go语言的消息推送平台的设计与实现;王伯槐;张烨;《数码设计》;20170123;33-36页 *

Also Published As

Publication number Publication date
CN109714249A (zh) 2019-05-03

Similar Documents

Publication Publication Date Title
CN109714249B (zh) 一种小程序消息的推送方法及相关装置
CN104794123A (zh) 一种为半结构化数据构建NoSQL数据库索引的方法及装置
CN101419615A (zh) 一种前后台数据库的同步方法及装置
CN112328641B (zh) 多维度数据聚合方法、装置及计算机设备
CN108205571B (zh) 键值数据表的连接方法及装置
CN111782640B (zh) 一种云平台的数据处理方法、系统、电子设备及存储介质
CN112256715A (zh) 索引的更新方法、装置、电子设备以及存储介质
CN112380278A (zh) 财务数据报表的生成方法、装置、设备及存储介质
EP2862101A1 (en) Method and a consistency checker for finding data inconsistencies in a data repository
CN101751429A (zh) 一种前后台数据库的同步方法及装置
CN111580972B (zh) 一种虚拟资源处理方法及装置
CN114385188A (zh) 一种代码工作量统计方法、装置和电子设备
CN113342647A (zh) 一种测试数据的生成方法及装置
CN110851758B (zh) 一种网页访客数量统计方法及装置
CN104317820B (zh) 报表的统计方法和装置
CN110851437A (zh) 一种存储方法、装置及设备
CN106294721B (zh) 一种集群数据统计及导出方法及装置
CN112860746B (zh) 一种基于缓存削减的方法、设备及系统
CN106446080B (zh) 数据查询的方法、查询服务设备、客户端设备和数据系统
CN103761233A (zh) 处理数据库操作请求的方法、设备和系统
CN110427390B (zh) 数据查询方法及装置、存储介质、电子装置
CN112765200A (zh) 一种基于Elasticsearch的数据查询方法及装置
CN113190554A (zh) 一种生成主键的方法和分布式系统
CN112749197A (zh) 数据分片刷新方法、装置、设备及存储介质
CN112445800A (zh) 一种数据流水号的生成方法、系统及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240131

Address after: Room 101-1, Building 2, No. 95 Daguan Middle Road, Tianhe District, Guangzhou City, Guangdong Province, 510000

Patentee after: Guangzhou Zhongtian Technology Consulting Co.,Ltd.

Country or region after: China

Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240430

Address after: 710000, Building 5-175, Jinghe Zhigu, Chongwen Town, Jinghe New City, Xixian New District, Xi'an City, Shaanxi Province, China

Patentee after: Xi'an Yunshang Chusheng Network Technology Co.,Ltd.

Country or region after: China

Address before: Room 101-1, Building 2, No. 95 Daguan Middle Road, Tianhe District, Guangzhou City, Guangdong Province, 510000

Patentee before: Guangzhou Zhongtian Technology Consulting Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right