端くれプログラマの備忘録 Laravel [Laravel] タスクスケジューリングを使って処理を自動実行する

[Laravel] タスクスケジューリングを使って処理を自動実行する

ざっと実装手順を覚え書き。

コマンドの実装

$ php artisan make:console DailyUpdate --command="dailyupdate"
Console command created successfully.

app\Console\Commands\DailyUpdate.php

class DailyUpdate extends Command
{
    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        echo 'hello';
    }
}

app\Console\Kernel.php

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        // Commands\Inspire::class,
        Commands\DailyUpdate::class,
   ];
}

テスト

$ php artisan dailyupdate
hello

スケジューリング

app\Console\Kernel.php

class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // $schedule->command('inspire')
        //          ->hourly();
        $schedule->command('dailyupdate')->dailyAt('00:05');
    }
}

あとはcronを設定する。

参考サイト

Task Scheduling – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/master/scheduling

Laravel5でバッチ開発 | プログラミングメカブログ
http://blog.mekachan.net/?p=198

laravelでバッチ作ってcronで動かしてみた – Qiita
http://qiita.com/ritukiii/items/a70d89fa988b2d9afbc4