0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravelタスクスケジューラを使って定期実行を行う

Last updated at Posted at 2023-02-19

やりたいこと

毎日決まった時間に処理を動かして、バッチ処理のようなものを行う

手順

1.クラスを作成する

php artisan make:command testScheduleをコマンドラインで叩くと、
App\Console\Commands配下ににファイルができます。
この部分に実際に行いたい処理を書いていきます。

App\Console\Commands\testSchedule.php
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class testSchedule extends Command
{
    protected $signature = 'test:echo';//ここで指定したコマンドを実行すると処理が走るようになる

    protected $description = 'echoする処理です';//コマンドの説明を記載する

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()//ここに実際に行いたい処理を書く
    {
        echo 'schedule_test';
    }
}

2.Kernelに登録する

/app/Console/Kernel.php
    protected $commands = [
        Commands\testSchedule::class//追記する
    ];

3.実行時間を指定する

今回は例として、一時間に一回処理を実行したいとします。
Laravelタスクスケジューラなら他にももっと複雑な指定も可能です。
他に気になる人はこちらを見てみてください。

/app/Console/Kernel.php
<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     *
     * @param \Illuminate\Console\Scheduling\Schedule $schedule
     *
     * @return void
     */
    protected function schedule(Schedule $schedule): void
    {
        $schedule->command('test:echo')->hourly();//1の手順で$signatureに記載したものを指定する
    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands(): void
    {
        $this->load(__DIR__ . '/Commands');

        require base_path('routes/console.php');
    }
}

4.動作確認をしてみる

コマンドラインで以下を実行すると処理単体で動作確認を行えます。
ここでも1.クラスを作成する$descriptionに追加したものを使います。

php artisan test:echo

php artisan schedule:runを叩くことで登録しているすべての処理を確認できます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?