Laravel 5.0 Artisanコマンドライン

イントロダクション

Artisan(アーティザン:職人)とは、Laravelを構成しているコマンドラインインターフェイスの名前です。アプリケーション開発で役立つ、数多くのコマンドを用意しています。パワフルなSymfonyコンソール・コンポーネントを利用し動いています。

使用法

使用可能な全コマンドの一覧

使用可能なコマンドのリストを全部表示するには、listコマンドを使用してください。

php artisan list

コマンドのヘルプ表示

全てのコマンドは「ヘルプ」が用意されており、説明と使用できる引数、オプションを表示します。ヘルプを表示するには、helpに続いてコマンド名を入力してください。

php artisan help migrate

設定環境の指定

コマンドを実行する設定環境を指定するには、--envスイッチを使用します。

php artisan migrate --env=local

現在のバージョンの表示

インストールしているLaravelのバージョンを確認するには、--versionオプションを指定します。

php artisan --version

コマンド外からの呼び出し

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でサーバーに接続する必要がありました。人生をより簡単に生きましょう。Laravelコマンドスケジューラーを使い、サーバーにCronエントリーを一つ追加するだけで、他に何も用意しなくても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')->mondays();
$schedule->command('foo')->tuesdays();
$schedule->command('foo')->wednesdays();
$schedule->command('foo')->thursdays();
$schedule->command('foo')->fridays();
$schedule->command('foo')->saturdays();
$schedule->command('foo')->sundays();

ジョブの多重起動を防ぐ

デフォルトでは、以前の同じジョブが起動中であっても、スケジュールされたジョブは実行されます。これを防ぐには、withoutOverlappingメソッドを使用してください。

$schedule->command('foo')->withoutOverlapping();

この例で、fooコマンドは起動していない限り、毎分実行されます。

ジョブを実行する環境の指定

$schedule->command('foo')->monthly()->environments('production');

アプリケーションがメンテナンスモードでも実行することを指定

$schedule->command('foo')->monthly()->evenInMaintenanceMode();

コールバックの結果がTrueの時だけジョブを実行

$schedule->command('foo')->monthly()->when(function()
{
    return true;
});

スケジュールしたジョブの出力をメール送信

$schedule->command('foo')->sendOutputTo($filePath)->emailOutputTo('foo@example.com');

注意: メール送信する前に、予めファイルへ出力を書き出しておく必要があります。

ジョブの出力を指定したファイルへ書き出し

$schedule->command('foo')->sendOutputTo($filePath);

ジョブを実行後に指定したURLへPing

$schedule->command('foo')->thenPing($url);

thenPing($url)の機能を利用するにはGuzzle HTTPライブラリーが必要です。Guzzle 5をプロジェクトに追加するには、composer.jsonファイルへ以下の行を追加してください。

"guzzlehttp/guzzle": "~5.0"

ドキュメント章別ページ

Artisan CLI

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

バージョン

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる