鍍金池/ 教程/ PHP/ 概覽
Laravel Cashier
Eloquent ORM
HTTP 響應(yīng)
發(fā)行說明
擴(kuò)展包開發(fā)
HTTP 控制器
事件
擴(kuò)展框架
Contracts
開發(fā)
配置
表單驗(yàn)證
錯誤與日志
Hashing
貢獻(xiàn)指南
郵件
Session
遷移與數(shù)據(jù)填充
查詢構(gòu)造器
Redis
升級向?qū)?/span>
概覽
緩存
服務(wù)提供者
Envoy 任務(wù)執(zhí)行器
隊列
單元測試
服務(wù)容器
文件系統(tǒng) / 云存儲
認(rèn)證
請求的生命周期
加密
模板
視圖 (View)
Laravel Homestead
Laravel 安裝指南
介紹
Command Bus
分頁
輔助方法
應(yīng)用程序結(jié)構(gòu)
HTTP 路由
HTTP 請求
基本用法
本地化
HTTP 中間件
結(jié)構(gòu)生成器
Facades
Laravel Elixir

概覽

介紹

Artisan 是 Laravel 內(nèi)置的命令行接口。它提供了一些有用的命令協(xié)助您開發(fā),它是由強(qiáng)大的 Symfony Console 組件所驅(qū)動。

用法

列出所有可用的命令

要查看所有可以使用的 Artisan 命令,你可以使用 list 命令:

php artisan list

瀏覽命令的幫助畫面

每個命令都包含一個顯示并描述這個命令能夠接受哪些參數(shù)和選項(xiàng)的「幫助畫面」。要瀏覽幫助畫面,只需要在命令名稱前面加上 help 即可:

php artisan help migrate

指定環(huán)境配置

您可以指定要使用的環(huán)境配置,只要在執(zhí)行命令時加上 --env 即可切換:

php artisan migrate --env=local

顯示目前的 Laravel 版本

你也可以使用 --version 選項(xiàng),查看目前安裝的 Laravel 版本:

php artisan --version

在命令行接口以外的地方調(diào)用命令

有時你會希望在命令行接口以外的地方執(zhí)行 Artisan 命令。例如,你可能會希望從 HTTP 路由調(diào)用 Artisan 命令。只要使用 Artisan facade 即可:

Route::get('/foo', function()
{
    $exitCode = Artisan::call('command:name', ['--option' => 'foo']);

    //
});

你甚至可以把 Artisan 命令放到隊列,他們會通過 隊列工作者 在后臺執(zhí)行:

Route::get('/foo', function()
{
    Artisan::queue('command:name', ['--option' => 'foo']);

    //
});

調(diào)用 Artisan 命令

過去,開發(fā)者會對每個他們想要調(diào)用的命令行指令建立 Cron 對象。然而,這很令人頭痛。你的命令行指令調(diào)用不再包含在版本控制里面,并且你必須 SSH 進(jìn)入你的服務(wù)器以添加 Cron 對象。讓我們來讓生活變得更輕松。Laravel 命令調(diào)用器允許你順暢地且語義化地定義命令調(diào)用在 Laravel 里面,而且你的服務(wù)器只需要一個 Cron 對象。

你的命令調(diào)用保存在 app/Console/Kernel.php 文件。你會在這個類里看到一個 schedule 方法。為了幫助您開始,方法里面包含一個簡單的例子。你可以依照你需要的自由地添加任何數(shù)量的預(yù)定工作到 Schedule 對象。你只需要添加這個 Cron 對象到服務(wù)器:

* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1

這個 Cron 將會每分鐘調(diào)用 Laravel 命令調(diào)用器。接著,Laravel 評估你的預(yù)定工作并在時間到時執(zhí)行工作。這不能再更簡單了!

更多調(diào)用的例子

讓我們來多看幾個調(diào)用的例子:

調(diào)用閉包

$schedule->call(function()
{
    // 執(zhí)行一些任務(wù)...

})->hourly();

調(diào)用終端機(jī)命令

$schedule->exec('composer self-update')->daily();

自己配置 Cron 表達(dá)式

$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');

每天兩次的工作

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

每個工作日執(zhí)行的工作

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

每周一次的工作

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

// 調(diào)用每周一次在特定的日子 (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();

限制應(yīng)該執(zhí)行工作的環(huán)境

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

指定工作在當(dāng)應(yīng)用程序處于維護(hù)模式也應(yīng)該執(zhí)行

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

只允許工作在閉包返回 true 的時候執(zhí)行

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

將預(yù)定工作的輸出發(fā)送到指定的 E-mail

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

注意: 你必須先把輸出存到文件中才可以發(fā)送 email。

將預(yù)定工作的輸出發(fā)送到指定的路徑

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

在預(yù)定工作執(zhí)行之后 Ping 一個給定的 URL

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