php+mysql 站内信功能怎么设计更合理?

想做个站内信功能,用户对用户的我知道怎么做,如果管理员想给他网站所有的用户(假设用户数量非常庞大,上亿级别的)都发一条通知,通知的内容是相同的。1,消息怎么写进数据库?是... 想做个站内信功能,用户对用户的我知道怎么做,如果管理员想给他网站所有的用户(假设用户数量非常庞大,上亿级别的)都发一条通知,通知的内容是相同的。
1,消息怎么写进数据库?是每个用户都新建这条消息,还是只新建一条作为共用?
2,如果只新建一条,用户登陆网站的时候会提示有未读消息,有的用户读取了消息,则如何标记哪个用户已经读过?
展开
 我来答
百度网友b990ffa
推荐于2018-04-06 · TA获得超过1.3万个赞
知道大有可为答主
回答量:4324
采纳率:0%
帮助的人:1593万
展开全部

这个功能,你可以参考微博的推送思路。

 

  1. 比如你关注了很多明星(千万级大V),他们发的每条微博会进入到“我的首页”。比如某个明星发了条微博abc,你在“我的首页”里看到的"abc"并不是读自明星微博个人的数据库,而是来自“我的首页”里一个专门的数据集合。

  2. 通俗的讲,这个数据集合是完全属于你个人的,你所关注的每个人,当他们发微博时,会同步“推送”到你自己个人的这个“数据集合”里。

  3. 那么问题来了,千万级大V,每发一条微博,就要同步推给千万个粉丝,生成千万条数据吗?NO,微博根据用户活跃度等一系列算法,将用户分成不同梯队,一批一批的推送,例如一个近30天都没登录过的用户,自然就会被划到较迟推送的那一批里。这样做是为了分流服务器负担。

  4. 但不同产品对于数据设计有不同的思路,你这个公用一条站内信,我的建议是,建个公共站内信统一变量(例如letter=20160514),可以保存到用户的cookies里。

  5. 当用户访问页面时,程序首先将这个变量值和cookies里保存的变量对比,相同则略过,不同则进行读取相应的公共站内信,保存到自己的“收件箱”里。

  6. 这样可以使原本需要同步推给千万用户一条站内信的工作,由主动推送变成被动发送。用户上线访问了,对比、发送,这种工作显然要大大减小了服务器压力。

  7. 读取消息也是,反馈生成一条数据写到数据库里就好了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式