前言
本教學將透過revolution/laravel-console-starter 建置具備自訂 artisan 指令的 Laravel 應用程式。
使用此 starter kit 的好處:
- 快速上手 — 無需複雜設定即可立即開始 console 應用開發
- Laravel 生態系 — 可運用任務排程、資料庫、通知等 Laravel 豐富功能
- Artisan 指令 — 透過 Laravel 強大的 Artisan 系統輕鬆建立與管理自訂指令
- 易於測試 — 可用 Laravel 的測試框架撰寫指令測試
前置條件
請先安裝以下軟體。- PHP
^8.3 - Composer(https://getcomposer.org/)
- Laravel Installer(
composer global require laravel/installer)
專案設定
1
建立新專案
在終端機執行以下指令。會建立
my-app 目錄,並設定 console 應用的基本結構。安裝時會自動執行:- 從
.env.example產生.env檔 - 透過
php artisan key:generate設定應用程式金鑰
2
確認環境設定
預設情況下,郵件寄送設定為輸出至 log(
MAIL_MAILER=log)。若需要實際寄送郵件,請在 .env 檔中設定 Mailgun、Postmark、SES 等服務。建立 Console 指令
1
產生指令
使用
make:command Artisan 指令建立新指令。YourCommandName— 要建立的指令類別名稱(例:SendDailyReport)your:command— 指令呼叫名稱(例:report:send-daily)
app/Console/Commands/YourCommandName.php。2
實作指令
編輯所產生的檔案實作邏輯。以下是 Hello World 指令範例。以
$signature 定義指令的呼叫名稱,並在 handle() 方法中撰寫邏輯。3
執行指令
storage/logs/laravel.log 與 console 輸出訊息。透過 GitHub Actions 進行任務排程
使用 GitHub Actions 可以無需伺服器 cron job 就定期執行指令。1
確認 workflow 檔案
Starter kit 已預先包含
.github/workflows/cron.yml。2
替換指令
將 若要執行多個指令:
php artisan inspire 替換為自己的指令。3
調整排程
變更
cron 表達式來設定執行頻率。4
以 secret 管理機密資訊
API 金鑰或密碼等機密資訊請使用 GitHub 儲存庫 secret。在 GitHub 儲存庫的 Settings > Secrets and variables > Actions 新增 secret,並於 workflow 中引用。
通知功能
可透過 Email、Slack 等通知指令的執行結果或錯誤。1
建立通知類別
app/Notifications/TaskCompleted.php。2
設定通知頻道
視需要公開設定檔。
3
從指令發送通知
詳情請參考 Laravel 通知文件。
實務應用範例
範例 1:網站存活監控與 Slack 警示
檢查網站是否上線,並於偵測到問題時向 Slack 發送警示的指令。1
安裝 Slack 通知頻道
2
建立指令與通知
3
設定 Slack
.env 新增 Slack webhook URL。config/services.php。4
實作通知
編輯
app/Notifications/WebsiteDown.php。5
實作指令
編輯
app/Console/Commands/MonitorWebsites.php。6
於 GitHub Actions 排程
更新
.github/workflows/cron.yml。範例 2:加密貨幣投資組合更新與 Discord 通知
從 CoinGecko API 取得加密貨幣價格,並透過 Discord webhook 發送更新的指令。1
安裝 Discord 通知頻道
2
建立指令與通知
3
設定 Discord
於 更新
.env 新增 Discord webhook URL。config/services.php。4
實作並執行指令
詳細實作請參考 GitHub 儲存庫的教學。
範例 3:網站內容抓取與郵件通知
從網站抓取內容並以 Email 傳送結果的指令。1
建立指令與通知
2
設定郵件
.env 檔中加入郵件設定。3
實作並執行指令
下一步
你已經了解使用revolution/laravel-console-starter 建置 Laravel console 應用程式的基礎。
若要進一步深入學習:
- 探索 Laravel 文件 — 於 Laravel 官方文件 了解可強化 console 應用的功能
- 實作測試 — 以 Laravel 測試框架建立指令的測試,確保可靠度
- 考慮套件開發 — 若在多個專案中會使用類似指令,可考慮發佈為可重複使用的 Laravel 套件
- 掌握最新資訊 — 追蹤 Laravel News 或官方部落格,隨時掌握最佳實踐