| 1.创建一个自定义的Command 
 # php artisan make:command Hello 
 2.编辑Hello.php文件(app/Console/Commands/Hello.php)?
?
<?php
namespace App\Console\Commands;
use App\Http\Controllers\CeShiController;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
class Hello extends Command
{
    //名称
    protected $signature = 'command:ceshi';
    //描述
    protected $description = 'Command description';
    public function __construct()
    {
        parent::__construct();
    }
    //执行的业务
    public function handle()
    {
        //调用方法
        (new CeShiController())->ceshi();
        //或者直接书写逻辑
        //Log::info(time().'测试定时任务');
    }
}
 3.修改kernel.php<?php
namespace App\Console;
use App\Console\Commands\Hello;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
    //应用中自定义的 Artisan 命令,可多个
    protected $commands = [
        Hello::class
    ];
    //定义计划任务和执行事件
    protected function schedule(Schedule $schedule)
    {
        //每分钟执行一次名称为command:ceshi的任务
        $schedule->command('command:ceshi')->everyMinute()->withoutOverlapping;
        // 工作日(周一至周五) 8 点 至 17 点每小时执行一次
        //$schedule->command('foo')
        //    ->weekdays()
        //    ->hourly()
        //    ->timezone('America/Chicago')
        //    ->between('8:00', '17:00');
    }
    protected function commands()
    {
        $this->load(__DIR__ . '/Commands');
        require base_path('routes/console.php');
    }
}
 调用频率和限制 | 方法 | 描述 | 
|---|
 | ->cron('* * * * *'); | 自定义 Cron 计划执行任务 |  | ->everyMinute(); | 每分钟执行一次任务 |  | ->everyFiveMinutes(); | 每五分钟执行一次任务 |  | ->everyTenMinutes(); | 每十分钟执行一次任务 |  | ->everyFifteenMinutes(); | 每十五分钟执行一次任务 |  | ->everyThirtyMinutes(); | 每三十分钟执行一次任务 |  | ->hourly(); | 每小时执行一次任务????????? |  | ->hourlyAt(17); | 每小时第 17 分钟执行一次任务 |  | ->daily(); | 每天 0 点执行一次任务 |  | ->dailyAt('13:00'); | 每天 13 点执行一次任务 |  | ->twiceDaily(1, 13); | 每天 1 点及 13 点各执行一次任务 |  | ->weekly(); | 每周日 0 点执行一次任务 |  | ->weeklyOn(1, '8:00'); | 每周一的 8 点执行一次任务 |  | ->monthly(); | 每月第一天 0 点执行一次任务 |  | ->monthlyOn(4, '15:00'); | 每月 4 号的 15 点 执行一次任务 |  | ->quarterly(); | 每季度第一天 0 点执行一次任务 |  | ->yearly(); | 每年第一天 0 点执行一次任务 |  | ->timezone('America/New_York'); | 设置时区 |  | ->weekdays(); | 限制任务在工作日执行 |  | ->weekends(); | 限制任务在周末执行? |  | ->sundays(); | 限制任务在周日执行 |  | ->mondays(); | 限制任务在周一执行 |  | ->tuesdays(); | 限制任务在周二执行 |  | ->wednesdays(); | 限制任务在周三执行 |  | ->thursdays(); | 限制任务在周四执行 |  | ->fridays(); | 限制任务在周五执行 |  | ->saturdays(); | 限制任务在周六执行 |  | ->between($start, $end); | 限制任务在? $start?和?$end?区间执行->hourly()->between('7:00', '22:00'); |  | ->when(Closure); | 限制任务在闭包返回为真时执行 |  | ->environments($env); | 限制任务在特定环境执行 |  | ->withoutOverlapping(); | 避免任务重复执行 | 
 4.执行定时任务? ?手动执行:php artisan command:ceshi (名称) ? ? 服务器自动执行:  
 1.编辑定时任务: crontab -e 2.php多版本可以将php改为版本的绝对路径,项目路径 ?* * * * * php /www/wwwroot/ceshi/artisan schedule:run >> /www/wwwroot/ceshi/test.txt 2>&1 3.保存重启cron服务 CentOS7方法: 重启服务systemctl restart crond.service?
 CentOS6方法: 重启服务 service crond restart 5.结果local.INFO: 1645090022定时任务  
local.INFO: 1645090081定时任务  
local.INFO: 1645090142定时任务  
local.INFO: 1645090201定时任务  
local.INFO: 1645090262定时任务  
 |