記一次Laravel 定時任務schedul:run未執行的處理


關於Laravel的任務調度(定時任務)的配置在此不做贅述,跟着官方文檔一步一步的操作是不會導致定時任務不能正常工作的。
為保證能及時捕獲定時任務執行出現異常的原因,只需在配置系統crontab時指定日志文件即可。在執行中出現的任何問題都將會記錄在你指定(任意區域,需注意權限)的日志當中。這對於尋找問題原因來說,是極為方便的。

* * * * * cd /path-to-your-project && php artisan schedule:run >> 你的日志文件位置.log 2>&1

以上定時任務確是每分鍾執行一次,因此無論成功失敗,你都會在你指定的日志中看見最新的輸出信息。可使用以下指令查看日志中的輸出:

tail -f 你的日志文件位置

以上,就能幫助你很快的捕捉到為何你的Laravel定時任務未執行的原因。除此之外,有一個建議是:在將你的定時任務部署到機器上之前,你應該先通過:

php artisan schedual:run

命令來運行一下你的任務,這樣可以在開發階段就能將大部分的問題都處理掉。當然前提是,調用的任務是每分鍾執行的,否則的話,該命令只有在符合你所定義的時間間隔時才會去執行你的任務。
最后,提及一個我自己遇到的問題。若你使用root賬戶創建了定時任務,則無需在定時任務腳本中加入root賬戶名稱。如下:

* * * * * root cd /path-to-your-project && php artisan schedule:run >> 你的日志文件位置.log 2>&1

在我的ubuntu機器上,這樣做直接會報錯:

/bin/sh:root:command not found

接原因是使用root賬戶創建crontab定時任務后,該定時任務文件就保存在了/var/spool/cron/root中,因此無需再指定root賬戶。
文中難免有疏漏,若存在,煩請責正!
PS:以上文中所有指令均為手打,在此不對指令拼寫的正確性與各平台的適用性做任何保證。若出現相關問題,煩請自行bing。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM