首頁 > php框架 > Laravel > 主體

Laravel Cron 定時任務「跳坑」點

藏色散人
發布: 2019-11-15 14:04:52
轉載
3319 人瀏覽過

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 Cron 定時任務「跳坑」點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板