簡體   English   中英

Laravel 5.3 - 防止太多通知?

[英]Laravel 5.3 - prevent too many notifications?

當照片被評論或“喜歡”時,我的 laravel 5.3 應用程序會為用戶創建數據庫通知。

如果經常喜歡和不喜歡某樣東西,那么用戶會收到很多通知,盡管例如只有 1 個新的Like

也許通知 function 可以sleep() 5 分鍾,然后在創建通知之前檢查點LikeComment是否仍然存在。 但是我仍然必須以某種方式“鎖定”它,以免創建太多通知(?)。

laravel 中是否已經包含某些內容(隊列、“鎖定”列或表)或其他簡單的解決方案?

謝謝你的建議。

我認為更好的解決方案是在代碼(某些類)或數據庫中的某個位置設置偏移量。

在發送通知之前,您可以檢查:

如果上次通知時間+ 5分鍾<當前時間-發送新通知。

您可以使用delay()在Laravel中延遲工作: https ://laravel.com/docs/5.2/queues#delayed-jobs

為了避免發送多個通知,我將使用xpuc7o的方法。 為了使事情更快,我將其存儲在memcache中而不是db中。

我知道這是一個老問題,但我找到了一種更好的方法來解決這個問題。

這個想法是使用具有自定義特征RoutesThrottledNotifications的 Laravel RateLimitter class 來限制某些通知的速率並避免重復。

這樣你只需要在每個你想要速率限制的通知中設置一個油門衰減時間。

更多信息和代碼在這里: https://scottwakefield.co.uk/writing/rate-limiting-notifications-in-laravel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM