關於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。
