2015-11-03 120 views
3

我有報名表,我想後,他們註冊成功發送電子郵件給用戶。我想在後臺運行電子郵件,以便頁面的響應時間更好一些。Laravel 5.1:事件和郵件之間的區別:隊列?

對於背景的電子郵件,我看到了我們可以使用:

  • EventShouldQueue
  • mail::queue()方法。

我的問題是在排隊郵件的情況下,以上兩種方法有什麼區別?通過隊列發送電子郵件時,其行爲與其他行爲有何不同?

+0

我的理解是,使用'Event'技術可以適用於任何類型的事件,你可能會建立更多的功能集成到你的電話(這是一個非常功能齊全的功能),而'郵件:: queue'是更簡單的速記,可以讓你快速排隊,而不是其他的。 – samiles

+0

@samiles:是我的猜測也是相同的,但這裏仍然張貼如果在電子郵件的背景下,兩者之間有什麼特別的。 – dev02

回答

2

當應用程序正在運行,則可能必須由可進行類似AddEntryToAuditLog行動聽衆拿起事件(如UserHasLoggedIn)。關於這些的重要之處在於,他們在致電Laravel期間開始和結束,並且之後沒有任何事情要做。 http://laravel.com/docs/5.0/events

的作業是什麼,可能需要做Laravel執行完成後,因爲它需要被延遲(後續一天後發送電子郵件)或需要很長的時間(例如準備宿主文件的zip壓縮備份)。使用Laravel的提供者或外部隊列提供者將這些作業放入隊列中。隊列負責監視待處理作業,並根據它們到達的順序以及任何計劃要求來運行它們。 http://laravel.com/docs/5.0/queues

有一些交叉。一個事件可能會觸發一個聽衆並註冊一個工作。例如。一個userRequestedBackup事件觸發 - 一個監聽器拿起事件發送一封通知郵件,並且一個作業排隊壓縮準備發送的文件。 http://laravel.com/docs/5.0/events#queued-event-handlers

+0

你說的事件,但如果事件使用,則郵件隊列將它推遲同樣喜歡的工作隊列程序「他們在調用Laravel中開始和結束」?那麼這個事件的概念**「他們在致Laravel的過程中開始和結束」** –

相關問題