LoginSignup
10
11

More than 5 years have passed since last update.

Laravel5.5 で非同期処理(Queue)を実装【database編】

Last updated at Posted at 2018-02-07

環境

  • CentOS 6.9
  • Apache 2.2
  • MySQL 5.6
  • PHP 7.1
  • Laravel 5.5

前回からの変更点

前回の Laravel5.5 で非同期処理(Queue)を実装【sync編】 で作成した非同期処理を database を利用した処理に変更する。

マイグレーションファイルを作成

console
php artisan queue:table
php artisan queue:failed-table

database/migrations にジョブ登録用のテーブル(jobs, failed_jobs)のマイグレーションファイルが作成される。

マイグレーションを実行

console
php artisan migrate

データベースに jobs, failed_jobs テーブルが作成される。

キューサービスの変更

.env
#QUEUE_DRIVER=sync
QUEUE_DRIVER=database

前回はデフォルトの sync だったが、今回は database に変更する。

キューワーカーの起動

console
php artisan queue:work

コードを変更した際はリスタートしない限り変更が反映されないため、かならず以下のコマンドでリスタートする。

console
php artisan queue:restart

実行環境では自動起動や定期的に再起動するなどの考慮が必要。

バックグランドでqueue:workプロセスを永続的に実行し続けるには、キューワーカが止まらずに実行し続けていることを確実にするため、Supervisorのようなプロセスモニタを利用する必要があります。
Laravel 5.5 キュー より抜粋

Supervisor の導入はまた後で考えよう。。。

その他

ジョブクラスやコントローラは前回と同じものをそのまま利用。

ジョブが失敗した場合

以下のコマンドにてジョブの確認等が可能。

失敗したジョブの確認

console
php artisan queue:failed

失敗したジョブの再実行

console
php artisan queue:retry ジョブID

失敗したジョブの削除

console
php artisan queue:forget  ジョブID

失敗したジョブの全削除

console
php artisan queue:flush

参考

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11