Laravel 任务调度(计划任务,定时任务)

欢迎来到手把手复制执行环节

步骤目录

    • 第一步生成调用文件
    • 第二步定义调度
    • 第三步启动调度器

第一步生成调用文件

执行以下命令
php artisan make:command 你的命名
该命令会在 app/Console/Commands 目录下创建 你命名的文件
下面是我对该文件的理解


namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Models\User;
use Illuminate\Support\Facades\Log; 

class Test Command
{
     
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
     //此处代表名称,调用时使用
    protected $signature = 'command:Test';
 
    /**
     * The console command description.
     *
     * @var string
     */
      //对定时任务的描述
    protected $description = '这是一个测试';
 
    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
     
        parent::__construct();
    }
 
    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()  
    {
     
    	/*
		 * 这是是执行任务
		 */
    	 //我们可以在这里做我们需要的操作
    	 $user = User::find(1);
    	 $user->update(['name'=>'成功修改']);
    	 Log::info('定时任务执行');
    }
}

第二步定义调度

文件修改好以后我们需要在App\Console\Kernel== 类的 schedule 方法中定义所有调度任务



namespace App\Console;

use DB;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
     
    /**
     * 应用提供的 Artisan 命令
     *
     * @var array
     */
    protected $commands = [
    	//这里写上你生成的文件路径
        \App\Console\Commands\Test::class,
    ];

    /**
     * 定义应用的命令调度
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
     
    	//该处执行调度
 		$schedule->command('command:Test')->monthly();
    }
}

以下为调度频率设置函数

->cron('* * * * *');    在自定义Cron调度上运行任务
->everyMinute();    每分钟运行一次任务
->everyFiveMinutes();   每五分钟运行一次任务
->everyTenMinutes();    每十分钟运行一次任务
->everyThirtyMinutes(); 每三十分钟运行一次任务
->hourly(); 每小时运行一次任务
->daily();  每天凌晨零点运行任务
->dailyAt('13:00'); 每天13:00运行任务
->twiceDaily(1, 13);    每天1:00 & 13:00运行任务
->weekly(); 每周运行一次任务
->monthly();    每月运行一次任务
->monthlyOn(4, '15:00');    每月415:00运行一次任务
->quarterly();  每个季度运行一次
->yearly(); 每年运行一次
->timezone('America/New_York'); 设置时区

第三步启动调度器

只需将以下 Cron 项目添加到服务器

* * * * * /你php的绝对路径 /你项目的根目录绝对路径/artisan schedule:run >> /dev/null 2>&1

操作如下
命令行输入crontab -e
输入i可以进入编辑状态,可输入任务代码。
在最后面添加

* * * * * /你php的绝对路径 /你项目的根目录绝对路径/artisan schedule:run >> /dev/null 2>&1
例如
* * * * * /www/server/php/74/bin/php /www/wwwroot/test/artisan schedule:run >> /dev/null 2>&1

回车换行以后
先按Esc键,然后输入:wq 保存文件

然后执行命令

php artisan schedule:run 

定时任务调度即可顺利执行

你可能感兴趣的:(PHP,laravel,定时任务)