laravel 計劃任務 schedule 運行失敗的常見問題及解決方法
在使用 Laravel 的計劃任務 schedule 時,開發者經常會遇到任務看似已啟動,但實際代碼未執行的情況。本文將分析一個案例,并提供有效的解決方案。
用戶反饋:在服務器上執行 php artisan schedule:run 命令后,系統顯示任務已啟動:
running scheduled command: 'php' 'artisan' handbook:apple-expire-verify > '/dev/NULL' 2>&1
然而,handbook:apple-expire-verify 命令對應的 handle 方法并未執行。 這是因為 /dev/null 重定向導致潛在的錯誤信息被隱藏。
解決方案:
直接使用 Laravel 的 schedule 方法調度命令,避免通過 shell 命令間接調用 artisan 命令。
錯誤代碼 (app/console/Kernel.php):
$schedule->command('php artisan handbook:apple-expire-verify')->everyMinute();
更正后的代碼 (app/Console/Kernel.php):
$schedule->command('handbook:apple-expire-verify')->everyMinute();
通過此修改,Laravel 調度器能夠正確識別并執行 handbook:apple-expire-verify 命令。 請確保該命令已正確注冊在 Laravel 的命令列表中。 此外,建議移除 /dev/null 重定向,以便查看命令執行過程中的日志信息,方便問題排查。 這有助于更清晰地了解任務執行的細節,并快速定位潛在的錯誤。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END