關於 laravel 的任務排程
可移步至社群文件,這裡不做說明。
通常我們在專案中定義了一個或多個定時任務,都是在伺服器上透過 crontab 結合 artisan命令來統一管理 * * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
但是在Windows環境並不支援這樣的方式,見過許多解決方案都是透過設定Windows下的定時任務(建立.bat檔案)來實現,個人認為比較繁瑣不方便,就用go寫一個小工具來替代這樣的實現方式。算是可以比較好的解決自己在Windows環境開發下對定時任務的一個除錯管理。
推薦工具
go-crontab 基於 golang 的 crontab 定時工作管理員
功能
- 支援分鐘跟秒級
- 內部呼叫 bash -c 命令
- 理論上跨平臺支援 Windows 、Linux、MacOs
使用
- 自定義json配置檔案
# 引數說明
{
# 支援定義多個定時任務,直接在 crontab_cmd 追加物件即可
"app": {
"model": "s", # 預設 s 秒級 如需使用分鐘級改為 m
"crontab_cmd": [
{
"crontab": "0/1 * * * * ?", #crontab 表示式
"cmd": "go version" # 要執行的命令
}
]
}
}
# windows 實現 laravel 的任務排程 schedule:run (只支援分鐘級別,不能定義秒級的!!!)
# app.model可以定義為s 但是對應的crontab表示式必須為每分鐘執行!可參考 Java(Quartz) 表示式書寫
# 或直接定義app.model 為 m ,則crontab表示式為 "* * * * *"
{
"app": {
"model": "s",
"crontab_cmd": [
{
"crontab": "0 0/1 * * * ?",
"cmd": "go version"
},
{
"crontab": "0 0/1 * * * ?",
"cmd": "cd /e/www/project/dexter/laravel-test-demo && php artisan schedule:run"
}
]
}
}
- 編譯 (windows提供編譯好的檔案下載 releases 僅1.5M)
go build
- 執行
- 保證編譯的檔案與 config.json 在同級目錄
- 執行 ./go-crontab.exe (不要關閉終端)
- 執行過程會自動生成log檔案(儲存一週,會定期清理)
本作品採用《CC 協議》,轉載必須註明作者和本文連結