繁体   English   中英

Laravel 5.5-100万关注者的通知/子通知?

[英]Laravel 5.5 - Notifications/Subnotifications for 1 million followers?

我使用了一个notifications表和一个subnotifications notifications表,并且我还使用了队列,因此当用户发布内容时它在后台运行。 当一个用户有10名追随者和他们建立讯息中, notifications表得到的单个条目,其包括用于所述通知后数据,并且subnotifications表得到10个条目(每跟随一个subnotification,每个参照通知的ID,因此我们不必重复通知数据10次,只需使用read_at即可知道该关注者是否读取了通知数据)。

这是快速的,并且效果很好,没有任何问题。 但是,当对一百万个关注者进行测试时,大约需要6个小时才能插入一个帖子的子通知! 这当然是不可接受的,因为插入一百万个子通知花费的时间太长,每个追随者一个。 想象一下,同一位用户发布了10条帖子,就像大约60小时的插入时间和1000万个子通知行。

我只是想让追随者知道是否有新帖子,如果他们还没有阅读的话。 有没有更好,更有效的扩展方式?

更新:卡在当前方法见下文...

如果关注者$user有100位领导者(他们遵循的是跟随者表中的时间戳,当然是在不同的created_at时间戳),那么从关注者关注每个领导者起,关于领导者新帖子的正确查询是什么? 我被这个伪代码卡在created_at上:

// Assume `leader_id` is a column in the notifications table
DB::table('notifications')
  ->whereIn('leader_id', $leaderIds)
  ->where(`created_at`, '>', $whatTimestampsGoHere)
  ->paginate(20);

有100种不同的时间戳,我坚持如何正确,有效地解决这一问题。 有任何想法吗?

正如评论所说,可以减少插入,如果你只插入到子表即subnotifications当用户读取它,而不是对通知的创建,从而避免这一问题创造它。 当试图检查用户是否已经看到了通知,只是检查,如果他们在存在subnotifications有问题的用户和通知。

同样,如前所述,在获取要显示给用户的通知时,将从notifications获取notifications但将通知限制为用户开始关注之后创建的通知,以免新用户被通知所淹没。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM