.env
文件的 **QUEUE_CONNECTION **字段配置爲 databasephp
Laravel可配置多種隊列驅動,包括 "sync", "database", "beanstalkd", "sqs", "redis", "null"(具體參見app/config/queue.php)
其中sync爲同步,database爲使用數據庫,後面三種爲第三方隊列服務,最後一種爲不使用隊列。mysql
該位置具體是什麼請查看app/queue
laravel
爲了使用 database
隊列驅動,你須要一張數據表來存儲任務。redis
php artisan queue:table
生產一張隊列表sql
php artisan migrate
mysql版本5.7.7如下可能會報以下錯誤數據庫
解決方案網絡
打開app/Providers/AppServiceProvider
文件,在boot方法中加入以下代碼,刪除數據庫中已經生成的遷移數據表,再次運行就能夠成功。app
必定要刪除已經生成的job數據表,否者彙報以下錯誤ide
\Schema::defaultStringLength(191); //add fixed sql
數據庫最終效果測試
在你的應用程序中,隊列的任務類都默認放在 app/Jobs
目錄下。
若是這個目錄不存在,那當你運行 make:job
Artisan 命令時目錄就會被自動建立。
你能夠用如下的 Artisan 命令來生成一個新的隊列任務:
php artisan make:job SetLog
protected $message; /** * Create a new job instance. * * @return void */ public function __construct($message) { $this->message = $message; } /** * Execute the job. * * @return void */ public function handle() { \Log::info($this->message); }
public function index(Request $request){ SetLog::dispatch(date('Y-m-d H:i:s') . "進入了系統"); }
這時,因爲隊列還沒開啓,數據庫的隊列表中會有一個任務,等待隊列啓動後執行
php artisan queue:work
這時,隊列表中的任務執行後就會自動刪除了,相似消費了任務
以上是拋轉引玉的一個簡單例子,具體細節能夠查看laravel的隊列文檔