同時發佈:http://ekan001.com/article/26php
####配置#### 關於隊列的定義,這裏就不做介紹了。咱們要使用異步隊列就有兩個關鍵:linux
1.存儲隊列的地方 2.執行任務的服務
打開 config/queue.php
,這是Laravel5關於隊列的配置文件。首先咱們能夠經過 default
參數指定默認隊列驅動,默認配置是 sync
, 這是同步隊列,咱們要作異步隊列首先就要改變這裏。假設咱們用 database
做爲驅動,隊列任務將會存放在數據庫中,而咱們後面會另外啓動一個後臺服務來處理隊列任務,這就是異步方式了。數據庫
'default' => 'database'
修改完配置後,咱們須要建立一個表來存放隊列任務,Laravel5已經在自帶artisan命令中內置了一個指令用來生成數據遷移,只須要兩條命令便可,固然你得實現配置好數據庫鏈接。app
php artisan queue:table php artisan migrate
這樣就自動在數據庫中建立了 jobs 表。異步
####啓動隊列監聽服務#### 經過下面這條指令啓動隊列監聽服務,它會自動處理 jobs 表中的隊列任務:spa
php artisan queue:listen
在linux中,若是想讓它在後臺執行,能夠這樣:code
nohup php artisan queue:listen &
####添加隊列任務#### 關於隊列任務的添加,手冊裏說的比較詳細,這裏就簡單舉個例子吧。隊列
首先,經過artisan建立一個隊列命令:get
php artisan make:command SendEmail --queued
這樣會生成 app/Commands/SendEmail.php
這個類文件,這個類會被標識爲隊列命令,你能夠在 handle
方法中寫本身的業務邏輯。同步
在控制器中,能夠簡單經過 Bus::dispatch
分發任務:
Bus::dispatch(new \App\Commands\SendEmail());
你會發現任務不會當即執行,而是被放到 jobs 表中,由隊列監聽服務處理。
更詳細的用法建議參考 command bus 和 queue 相關的手冊章節。