始めに
Laravelのバッチ処理機能を実装したので
備忘録として記事にしました。
2部構成となっております。
➀:バッチ処理機能(https://qiita.com/fuku_rin/items/546494332e666482a9eb)
➁:タスクスケジュール機能(Laravel機能)
➀から引継ぎついでいる内容となっております。
ご了承願います。
バッチ処理:特定の日時に指定した処理を実行できる処理のこと。
タスクスケジュール機能:Laravel内でバッチ起動の日時を設定することができる機能
環境
開発環境 | バージョン |
---|---|
Laravel | 8.8 |
PHP | 7.3 |
Server | Amazon Linux |
手順
1, Kernel.phpの編集設定
2, 日時の設定
3, cronとの連携設定
Kernel.phpの編集
/app/Console/Kernel.phpを編集していきます。
(コマンド名等は、別の記事(➀)にて設定したものになります。)
→https://qiita.com/fuku_rin/items/546494332e666482a9eb
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
\App\Console\Commands\BatchCommand::class,
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// バッチ処理
$schedule
->command('command:batch')
->withoutOverlapping()
->everyMinute(); // 一分毎に処理する
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
2, 日時の設定
Laravel内でバッチ処理が発動する日時を設定できます。
先ほど設定したKernel.phpファイル内で、指定することができます ↓
$schedule
->command('command:batch')
->withoutOverlapping()
->everyMinute(); // 一分毎に処理する
スケジュールオプションに関しては、こちらをご覧ください。
3, cronとの連携
Laravelプロジェクト配下にテキストファイル(cron.txt)を作成します。
* * * * * cd プロジェクトのパス && php artisan schedule:run >> /dev/null 2>&1
cronとの連携
// ファイルからcron設定の追加
$ crontab cron.txt
// cronスケジュール済み一覧確認
$ crontab -l
以上で、設定完了になります。
おまけ
cronファイル直接編集する場合
$ crontab -e
注意:cronファイルスケジュール済みデータ削除する場合
$ crontab -r
終わりに
最後までご覧いただきありがとうございました。
ご指摘、ご意見ありましたらコメントいただけますと幸いです。
参考資料
Laravel 8.x タスクスケジュール
Laravelのタスクスケジューラを使う