Laravel5異步隊列使用方法

同時發佈: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 相關的手冊章節。

相關文章
相關標籤/搜索