LoginSignup
0
0

More than 1 year has passed since last update.

➁バッチ処理機能、タスクスケジュール機能(Laravel)

Last updated at Posted at 2023-01-15

始めに

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

Kernel.php
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ファイル内で、指定することができます 

Kernel.php
    $schedule
        ->command('command:batch')
        ->withoutOverlapping()
        ->everyMinute();  // 一分毎に処理する

スケジュールオプションに関しては、こちらをご覧ください。

3, cronとの連携

Laravelプロジェクト配下にテキストファイル(cron.txt)を作成します。

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のタスクスケジューラを使う

0
0
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
0
0