イントロダクション
ArtisanはLaravelを構成しているコマンドラインインターフェイスの名前です。アプリケーション開発時に便利な多くのコマンドを提供しています。パワフルなSymfonyコンソール・コンポーネントで動いています。
使用法
使用可能な全コマンドをリストする
使用可能な全コマンドリストを表示するには、list
コマンドを使用してください。
php artisan list
コマンドのヘルプスクリーンを表示する
全てのコマンドは「ヘルプ」スクリーンが用意され、説明と使用できる引数・オプションを表示します。ヘルプスクリーンを表示するには、help
に続いてコマンド名を入力してください。
php artisan help migrate
設定環境を指定する
コマンドを実行する設定環境を指定するには--env
スイッチを使用します。
php artisan migrate --env=local
現在のLaravelバージョンを表示する
インストールしているLaravelのバージョンを確認するには、--version
オプションを指定します。
php artisan --version
CLI外からのコマンド呼び出し
時には、ArtisanコマンドをCLI外から実行したい場合もあるでしょう。例えば、HTTPルートからArtisanコマンドを起動したい時です。Artisan
ファサードを使用するだけです。
Route::get('/foo', function()
{
$exitCode = Artisan::call('command:name', ['--option' => 'foo']);
//
});
Artisanコマンドをキューに入れれば、キューワーカーにより、バックグラウンドで実行されます。
Route::get('/foo', function()
{
Artisan::queue('command:name', ['--option' => 'foo']);
//
});
Artisanコマンドのスケジュール
今まで開発者は、それぞれのコンソールコマンドをスケジュールするために、Cronエントリーを毎回作成してきました。しかし、これは悩みの種でした。コンソールスケジュールは、ソース管理下にありませんでしたし、Cronのエントリを追加するために、その都度SSHでサーバーにアクセスする必要がありました。人生をより簡単に過ごしましょう。サーバーに一つだけCronエントリーを追加するだけで、Laravelコマンドスケジューラーを使い、Laravel自身だけでコマンドスケジュールを流暢で記述的に定義することができます。
コマンドスケジュールは、app/Console/Kernel.php
ファイルに記述します。このクラスの中に、schedule
メソッドが見つかるでしょう。使用開始しやすいように、このメソッドの中に簡単な例を準備してあります。お好きなだけのジョブスケジュールをSchedule
オブジェクトに追加してください。次のCronエントリーだけ、サーバーに追加する必要があります。
* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1
このCronエントリは、Laravelコマンドスケジューラーを毎分呼び出します。それにより、Laravelはスケジュールされているジョブを評価し、必要のあるジョブを実行します。これ以上簡単になりません!
スケジュール例
別のスケジュール例をご覧ください。
クロージャーをスケジュールする
$schedule->call(function()
{
// タスクを行う…
})->hourly();
端末コマンドをスケジュールする
$schedule->exec('composer self-update')->daily();
Cronの記述法で指定する
$schedule->command('foo')->cron('* * * * *');
一定時間で繰り返す
$schedule->command('foo')->everyFiveMinutes();
$schedule->command('foo')->everyTenMinutes();
$schedule->command('foo')->everyThirtyMinutes();
毎日行うジョブ
$schedule->command('foo')->daily();
24時間制で時間を指定し、毎日行うジョブ
$schedule->command('foo')->dailyAt('15:00');
一日に2回行うジョブ
$schedule->command('foo')->twiceDaily();
ウィークデーに行うジョブ
$schedule->command('foo')->weekdays();
週毎に行うジョブ
$schedule->command('foo')->weekly();
// 曜日(0から6)と時間を指定する週間スケジュール
$schedule->command('foo')->weeklyOn(1, '8:00');
月毎に行うジョブ
$schedule->command('foo')->monthly();
ジョブを実行する環境を指定する
$schedule->command('foo')->monthly()->environments('production');
アプリケーションがメンテナンスモードでも実行することを指定する
$schedule->command('foo')->monthly()->evenInMaintenanceMode();
コールバックの結果がTrueの時だけジョブを実行する
$schedule->command('foo')->monthly()->when(function()
{
return true;
});