簡體   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