コマンドを作成する
Last-modified: Tue, 11 Sep 2018 00:36:07 JST (1844d)
Top > コマンドを作成する
Laravel5.6でCronなどから実行するコマンドを簡単に作成することができます。
コマンドの作成
まずはひな形を作成します。
php artisan make:command cron/GetRss
これで、app\Console\Commands\cron配下にひな形が作成されます。
- $signatureにコマンド名を指定します。
- $descriptionにコマンドの説明を記載します。
- handle()メソッドが実際に動作するメソッドになります。
コマンドの中身はここに実装していくことになります。
コマンドの登録
作成したコマンドはそのままでは動作しませんので、登録を行います。
App\Console\kernel.phpの中にある$commands配列に以下のように登録します。
protected $commands = [ Commands\cron\GetRss::class ];
ここに登録すると、
php artisan getrss
のように実行することができます。
タスクスケジューラ
Laravelでは、複数のコマンドを定期実行する際に、各コマンドをそれぞれCronに登録しなくても済むように、タスクスケジューラ機能があります。参考
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
のような毎分実行するCronを設定するだけで、あとはLaravelのタスクスケジューラが良しなに呼び出してくれます。
では、Laravelのタスクスケジューラはどうやって各コマンドの実行時刻を知るのでしょう?
App\Console\kernel.phpに
protected function schedule(Schedule $schedule) { $schedule->command('getrss')->withoutOverlapping(10)->hourly(); }
っとこんな感じで指定します。
- command('<コマンド名>')でコマンド指定
- withoutOverlapping()で二重起動防止。引数は分で、この経過時間を超えるとロックが外れる。
指定しない場合はコマンド処理中でも起動します。 - 実行間隔を指定(ここでは1時間単位)
Counter: 302,
today: 1,
yesterday: 1
このページの参照回数は、302です。