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

Php Laravel 5.5-100万关注者的通知/子通知?,php,laravel,laravel-5,laravel-5.5,laravel-notification,Php,Laravel,Laravel 5,Laravel 5.5,Laravel Notification,我使用一个通知表和一个子通知表,我还使用队列,因此当用户发布某个内容时,它会在后台运行。当一个用户有10个关注者并且他们创建了一个帖子时,通知表将获得一个条目,其中包含通知的帖子数据,子通知表将获得10个条目(每个跟随者一个子通知,每个子通知都引用通知的id,因此我们不必重复通知数据10次,在处使用read_来了解该跟随者是否读取了通知数据) 这很快,效果很好,没有任何问题。但是,当测试100万关注者时,为一篇文章插入子通知大约需要6个小时。这当然是不可接受的,因为插入100万子通知(每个关注者

我使用一个
通知
表和一个
子通知
表,我还使用队列,因此当用户发布某个内容时,它会在后台运行。当一个用户有10个关注者并且他们创建了一个帖子时,
通知
表将获得一个条目,其中包含通知的帖子数据,
子通知
表将获得10个条目(每个跟随者一个子通知,每个子通知都引用通知的id,因此我们不必重复通知数据10次,在处使用
read_来了解该跟随者是否读取了通知数据)

这很快,效果很好,没有任何问题。但是,当测试100万关注者时,为一篇文章插入子通知大约需要6个小时。这当然是不可接受的,因为插入100万子通知(每个关注者一个)太长了。假设同一个用户发布10篇文章,这将是be类似于插入约60小时,以及1000万次通知行

我只是想让粉丝们知道,如果他们还没有读过一篇新的帖子,有没有更好、更有效的方式来扩展

更新:坚持当前方法见下文…

如果一个跟随者
$user
有100个他们跟随的领导者(当然是在followers表中的不同
创建时间戳中跟随的领导者),那么从跟随者跟随每个领导者的时间起,正确的查询是如何了解领导者的新帖子的呢?我被困在
创建时间
的伪代码中:

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

有100个不同的时间戳,我一直在思考如何正确有效地解决这个问题。有什么想法吗?

如评论中所述,如果您仅在用户阅读时插入子表,即
子通知,而不是在创建通知时创建,则可以减少插入,从而避免了该问题。
当试图检查用户是否看到通知时,只需检查相关用户和通知的
子通知中是否存在这些通知


同样如前所述,当获取通知以显示给用户时,从
通知中获取通知
,但将通知限制在用户开始跟踪后创建的通知中,这样新用户就不会收到大量通知。

为什么不在用户阅读通知时仅插入子通知?获取从
通知
表中显示的通知,其中
子通知
上没有用户id和该通知id的条目,一旦用户看到,将该条目添加到
子通知
谢谢!这听起来是一个不错的选择,但我认为如果用户现在有3个追随者,问题会出现然后创建一个帖子,我们可以用
用户id
/
通知id
行检查它们是否存在于
子通知中,以了解它是否被读取。但是如果他们明天有7个新的关注者,新的7个不应该被通知,因为他们在帖子之后开始关注。我需要扫描关注者列表吗比较他们下面的时间戳<通知时间戳,并忽略帖子后的新关注者?这是有效的还是有更好的方法?嗯,听起来更合理,这样你实际上会将大量插入保存到数据库中,并保留功能,因为如果你关注100人,我可能无法真正理解这个问题例如,followers表将记录您的
follower\u id
leader\u id
,以及在
时间戳创建的
。当您查看通知时,您应该只看到您的领导者发布的新内容。如果您只有一个领导者,则很容易获得,因为您将跟随他们的时间戳与但是既然你有100个领导者,你不想在你跟随他们之前得到他们的旧帖子,只想在你跟随他们之后得到他们的帖子,但是你没有1个时间戳来进行比较,你有100个时间戳,所以这就是问题所在。嘿,Sergio,我在这里提出了一个新问题:为了在本地重新创建问题,因为我无法使查询与在
时间戳比较中创建的
正常工作,我不想继续添加到这个问题。感谢迄今为止的指导,伙计,我非常感谢您的帮助:)