イントロダクション

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;
});