laravel定時(shí)任務(wù)需要用cron;laravel中想要定時(shí)執(zhí)行所有的laravel任務(wù),就需要在服務(wù)器上添加cron條目,在root文件中添加“phppath 項(xiàng)目路徑/artisan schedule:run…”代碼即可。
本文操作環(huán)境:linux7.3系統(tǒng)、Laravel5.4版、Dell G3電腦。
laravel定時(shí)任務(wù)需要用cron嗎
laravel中有一個(gè)很強(qiáng)大上的功能,只需要在服務(wù)器上添加一個(gè)cron條目,就可以定時(shí)執(zhí)行所有的laravel任務(wù)。
現(xiàn)在有如下數(shù)據(jù)表:
我想讓cron表中的cron字段的值每分鐘增加1,那么我需要如下步驟:
1、在AppConsoleKernel.php中編寫laravel代碼
protected function schedule(Schedule $schedule) { $schedule->call(function () { DB::table('cron')->increment('cron'); })->everyMinute(); }
2、在服務(wù)的/var/spool/cron/root文件中添加代碼
注意:這里最好使用vim編輯器編輯文件,如果使用winscp編輯文件,會(huì)出現(xiàn)不執(zhí)行任務(wù)的問題。
在命令行輸入
crontab -e
添加如下代碼
* * * * * /usr/local/php/bin/php /data/wwwroot/test/artisan schedule:run 1>> /dev/null 2>&1
在命令行輸入
crontab -u root -l
不需要重啟cron服務(wù),因?yàn)橄到y(tǒng)每分鐘都會(huì)讀一遍/var/spool/cron目錄下的文件。
如果發(fā)現(xiàn)按照如下配置還是不能執(zhí)行的話,可以用以下方法排除問題:
看一下命令有沒有使用絕對(duì)路徑,比如這里使用/usr/local/php/bin/php而不是php,使用/data/wwwroot/test/artisan而不是artisan。
如果已經(jīng)使用了絕對(duì)路徑還是不執(zhí)行,那就直接在命令行輸入/usr/local/php/bin/php /data/wwwroot/test/artisan schedule:run 1>> /dev/null 2>&1,看看有沒有執(zhí)行,如果沒有執(zhí)行,那就是laravel代碼的問題,如果執(zhí)行了說明是環(huán)境變量的問題,好好檢查路徑的問題。如果不知道php在什么地方,在命令行輸入which php,就會(huì)提示你php安裝在什么位置了。
【