Laravel执行定时任务

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定时任务  

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值