您好,登錄后才能下訂單哦!
小編給大家分享一下Laravel中執行定時任務是如何實現,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
Laravel 中執行定時任務是通過 cron 來實現,官網文檔中就是簡單一句 + 一行Cron 代碼
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
但是在實際使用的過程中,如果對 Linux 和 Cron 不熟悉,會遇到一些小坑,我們整理并記錄了分享出來希望能幫助到大家。
坑1:環境變量
當Cron無法生效時,可能是Cron執行環境變量不正確引起的。
執行命令
env > /tmp/env.output
打開/tmp/env.output文件,將PATH字段整行添加至corntab文件頂部,corntab文件在/var/spool/cron目錄下
crontab 文件示例
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/mysql/bin:/opt/php7/bin:/opt/memcached/bin:/root/bin * * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
坑2:Cron 執行用戶導致 Laravel log 不可寫
通過 crontab -e 命令創建的 Cron 是屬于 root 用戶,如果定時任務在實行時主動寫入日志或者遇到異常未捕捉,會創建 root 權限的日志文件,最終會導致 php-fpm 的 www 賬號無法寫入。
因此需要在創建 cron 的時候指定用戶
crontab -u www -e
個人管理的系統中 php-fpm 執行用戶都是 www,請根據自己的實際情況調整代碼。
坑3:cron 內容最后一行未回車
解決上述兩點問題后,如果仍然發現 cron 不執行,請確認
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
代碼最后有進行回車換行。
看完了這篇文章,相信你對“Laravel中執行定時任務是如何實現”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。