您好,登錄后才能下訂單哦!
laravel 的任務調度,默認在 App\Console\Kernel 類 的schedule 中
三種調度 計劃方式:
- 閉包形式 : call
protected function schedule(Schedule $schedule){
$schedule->call(function () {
//自定義邏輯處理
})->daily(); //調度頻率
}- artisan 命令 或者 系統命令 :
$schedule->command('emails:send --force')->daily();- command 類 :command
$schedule->command(Command::class, ['--force'])->daily();
command 類 需要在 App\Console\Kernel 中注冊
protected $commands = [
\App\Console\Commands\Inspire::class,
];
$schedule->exec('node /home/forge/script.js')->daily(); //可以將命令發送到系統
調度頻率設置
->cron('* * * * *') 自定義調度任務
->everyMinute(); 每分鐘執行一次任務
->everyFiveMinutes(); 每五分鐘執行一次任務
->everyTenMinutes(); 每十分鐘執行一次任務
->everyThirtyMinutes(); 每半小時執行一次任務
->hourly(); 每小時執行一次任務
->hourlyAt(17); 每一個小時的第 17 分鐘運行一次
->daily(); 每到午夜執行一次任務
->dailyAt('13:00'); 每天的 13:00 執行一次任務
->twiceDaily(1, 13); 每天的 1:00 和 13:00 分別執行一次任務
->weekly(); 每周執行一次任務
->monthly(); 每月執行一次任務
->monthlyOn(4, '15:00'); 在每個月的第四天的 15:00 執行一次任務
->quarterly(); 每季度執行一次任務
->yearly(); 每年執行一次任務
->timezone('America/New_York'); 設置時區
額外限制條件
->weekdays(); 限制任務在工作日
->sundays(); 限制任務在星期日
->mondays(); 限制任務在星期一
->tuesdays(); 限制任務在星期二
->wednesdays(); 限制任務在星期三
->thursdays(); 限制任務在星期四
->fridays(); 限制任務在星期五
->saturdays(); 限制任務在星期六
->between($start, $end); 限制任務運行在開始到結束時間范圍內
->unlessBetween($start,$end)
->when(Closure); 限制任務基于一個為真的驗證,傳遞一個閉包,返回真會繼續執行
->skip(Closoure); 返回真,停止執行
避免重復任務
->withoutOverlapping();
強制維護模式下也運行
->evenInMaintenanceMode();
->sendOutputTo($filePath); //輸出任務到文件
->appendOutputTo($filePath); //添加到文件
發送到郵件
$schedule->command('foo')
->daily()
->sendOutputTo($filePath) //必須要這個
->emailOutputTo('foo@example.com');
任務鉤子
->before(Clousoure function(){ });
->after(Clousoure function(){ });
ping
->pingBefore($url);
->thenPing($url);
需要擴展包支持
composer require guzzlehttp/guzzle
一次性啟動任務: 常用于測試
php artisan schedule:run //運行所有任務
定時調度
crontab -e
* * * * * php programPath/artisan schedule:run >> /dev/null 2>&1
總結:可在 command 類的 handle 方法中調用service 服務
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。