環境
- 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