# schedule thinkphp 任务调度 代码实现主要参考 laravel 相关用法请参考 laravel 具体用法: 第一步 运行指令 ``` php think make:command Schedule schedule:run ``` 会生成一个app\console\Schedule命令行指令类,我们修改内容如下: ``` namespace app\command; use schedule\console\Command; use think\console\Input; use think\console\Output; class Schedule extends Command { protected function configure() { $this->setName('schedule:run'); } protected function execute(Input $input, Output $output) { //每天的上午十点和晚上八点执行这个命令 $this->command('test')->twiceDaily(10, 20); parent::execute($input, $output); } } ``` 继续运行指令 ``` php think make:command Test test ``` 第二步,配置config/console.php文件 ``` [ 'schedule:run'=>\app\command\Schedule::class, 'test' => 'app\command\Test', ] ]; ``` 第三步,您应该在crontab中添加以下命令: ``` * * * * * php /path/to/think schedule:run >> /dev/null 2>&1 ``` 时间表范例 此扩展支持Laravel Schedule的所有功能,环境和维护模式除外。 Scheduling Closures ``` $this->call(function() { // Do some task... })->hourly(); ``` Running command of your application ``` $this->command('migrate')->cron('* * * * *'); ``` Frequent Jobs ``` $this->command('foo')->everyFiveMinutes(); $this->command('foo')->everyTenMinutes(); $this->command('foo')->everyThirtyMinutes(); ``` Daily Jobs ``` $this->command('foo')->daily(); ``` Daily Jobs At A Specific Time (24 Hour Time) ``` $this->command('foo')->dailyAt('15:00'); ``` Twice Daily Jobs ``` $this->command('foo')->twiceDaily(); ``` Job That Runs Every Weekday ``` $this->command('foo')->weekdays(); ``` Weekly Jobs ``` $this->command('foo')->weekly(); // Schedule weekly job for specific day (0-6) and time... $this->command('foo')->weeklyOn(1, '8:00'); ``` Monthly Jobs ``` $this->command('foo')->monthly(); ``` Job That Runs On Specific Days ``` $this->command('foo')->mondays(); $this->command('foo')->tuesdays(); $this->command('foo')->wednesdays(); $this->command('foo')->thursdays(); $this->command('foo')->fridays(); $this->command('foo')->saturdays(); $this->command('foo')->sundays(); ``` Only Allow Job To Run When Callback Is True ``` $this->command('foo')->monthly()->when(function() { return true; }); ```