1. 程式人生 > >laravel Job 和事件

laravel Job 和事件

在做專案的時候,一直對JobEvent有個疑惑。感覺兩者是相同的東西,搞不清楚兩者的區別在哪裡!經過一段時間的琢磨和查找了相關的資料,對JobEvent做了一些總結,以便記憶。

Job

Job既可以用作同步,也可以用作非同步。
如果你想延遲執行一個操作,或者這個過程需要花費一段時間,那麼就可以選擇用Job,例如上傳一個比較大的檔案。
Job一般用在正在處理的事情。比如我們去銀行辦理業務,很多人排隊等待,我們可以把這條隊看成一個佇列queue,把每一個人看成一個Job,服務人員會幫我們一個接一個的處理業務。辦完了一個業務,系統會叫號叫到下一個人,執行下一個Job。每個人需要辦理的業務都不一樣,這就是每個Job

需要完成的任務。

Event

事件監聽可以允許參與不同的角色。事件監聽可以認為是特定事件發生的一個Job,一旦事件建立,監聽器就會觸發。事件可以理解成“當...”,“就...”。 一個事件可以被多個監聽器監聽,比如登入後,系統既要傳送郵件,又要傳送簡訊,這個時候,就可以建立一個登入事件,事件觸發後,同事被髮送郵件和傳送簡訊監聽到。

Job可以不間斷的執行,類似於我們要在每晚凌晨執行一個指令碼。

總結來說

Job關注與正在做的事情:

  • 正在註冊
  • 正在更新
  • 正在釋出
  • 批量發放

Event關注與做過的事情:

  • 註冊完成
  • 更新完成
  • 釋出完成
  • 傳送完成

Event 更多的用在已經完成的事情,類似於英語的過去式

原文地址:https://segmentfault.com/a/1190000016147268