当前位置: 首页 > 后端技术 > PHP

Laravel定时任务(taskscheduling)使用

时间:2023-03-29 18:09:42 PHP

startscheduler*****cd/path-to-your-project&&phpartisanschedule:run>>/dev/null2>&1defineschedulecall(function(){DB::table('recent_users')->delete();})->daily();}}//闭包执行调度$schedule->call(function(){})->daily();//Artisan命令调度$schedule->command('emails:sendTaylor--force')->daily();//Artisan命令调度,另一种写法$schedule->command(EmailsCommand::class,['Taylor','--force'])->daily();//Shell调度命令$schedule->exec('node/home/forge/script.js')->daily();//队列任务调度$schedule->job(newHeartbeat)->everyFiveMinutes();//分发任务到“heartbeats”队列$schedule->job(newHeartbeat,'heartbeats')->everyFiveMinutes();调度频率调度计划:->cron('*****');自定义Cron计划执行任务->everyMinute();每分钟执行一个任务->everyTwoMinutes();每两分钟执行一个任务->everyFiveMinutes();每五分钟执行一个任务->everyTenMinutes();每分钟执行一个任务->everyThirtyMinutes();每三十分钟执行一个任务->hourly();每小时执行一个任务->hourlyAt(17);每17分钟执行一次任务->everyTwoHours();每两小时执行一个任务->daily();每天0:00->dailyAt('13:00')执行一个任务;每天13:00->twiceDaily(1,13)执行一个任务;每天01:00和13:00执行一个task->weekly();每周日00:00执行一个任务->weeklyOn(1,'8:00');每周一08:00执行一个任务->monthly();在每月第一天00:00执行任务->monthlyOn(4,'15:00');每月4号15号:00执行任务->lastDayOfMonth('15:00');每月最后一天15:00执行一个任务->quarterly();在每个季度的第一天00:00执行一个任务->yearly();每天00:00执行一次任务其他约束:->weekdays();限制工作日的任务执行->weekends();限制在周末执行任务->星期日();周日限制任务执行->周一();限制任务执行在周一->周二();限制周二->周三的任务执行();限制任务在Wednesday->thursdays()执行;限制任务在星期四->星期五()执行;限制任务在周五执行->周六();限制任务在星期六->天(数组|混合)执行;限制任务在一周中的指定日期执行->between($start,$end);限制任务为$start和$end间隔执行->unlessBetween($start,$end);限制任务不在$start和$endinterval->when(Closure)之间执行;当闭包返回true->skip(Closure)时限制任务执行;当闭包返回true->environments(array|mixed)时,限制任务不执行;限制任务在特定环境下执行,避免重复执行任务$schedule->command('emails:send')->withoutOverlapping();withoutOverlapPing会锁定任务,默认24小时过期,可以通过参数传递过期时间,限制单个服务器执行任务。应用程序的默认缓存驱动必须是数据库、memcached或redis才能使用此功能。并且所有服务器必须使用相同的中央缓存服务器。$schedule->command('report:generate')->fridays()->at('17:00')->onOneServer();在后台执行任务默认情况下,任务按顺序执行。使用runInBackground方法让命令在后台同时运行。$schedule->command('analytics:report')->daily()->runInBackground();此方法仅支持通过command和exec方法执行的任务。任务输出$schedule->command('emails:send')->daily()->appendOutputTo($filePath)->emailOutputTo('foo@example.com');$schedule->command('foo')->daily()->emailOutputOnFailure('foo@example.com');任务输出仅支持通过command和exec方法执行的任务。任务钩子$schedule->command('emails:send')->daily()->before(function(){//任务即将开始...})->after(function(){//任务ends...});$schedule->command('emails:send')->daily()->onSuccess(function(){//任务成功...})->onFailure(function(){//任务失败...});