Laravel 8 - 任务调度

Laravel 8 - 任务调度 首页 / Laravel8入门教程 / Laravel 8 - 任务调度

本教程将为您提供有关如何在laravel 8中创建cron作业的简单示例。

步骤1:安装Laravel 8

在此步骤中,如果您还没有laravel 8应用程序设置,那么无涯教程必须获取最新的laravel 8应用程序。

无涯教程网

composer create-project --prefer-dist laravel/laravel blog

步骤2:创建命令

在这一步中,需要创建自定义命令。自定义命令将与任务调度scron作业一起执行。

php artisan make:command DemoCron --command=demo:cron

现在对命令文件进行一些更改。

app/Console/Commands/DemoCron.php

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class DemoCron extends Command

{

/**

* The name and signature of the console command.

*

* @var string

*/

protected $signature = 'demo:cron';

/**

* The console command description.

*

* @var string

*/

protected $description = 'Command description';

/**

* Create a new command instance.

*

* @return void

*/

public function __construct()

{

parent::__construct();

}

/**

* Execute the console command.

*

* @return mixed

*/

public function handle()

{

\Log::info("Cron is working fine!");

/*

Write your database logic we bellow:

Item::create(['name'=>'hello new']);

*/

}

}

步骤3:注册为任务调度程序

在此步骤中,需要在Kernel.php文件上定义执行时间的命令:

->everyMinute();Run the task every minute
->everyFiveMinutes();Run the task every five minutes
->everyTenMinutes();Run the task every ten minutes
->everyFifteenMinutes();Run the task every fifteen minutes
->everyThirtyMinutes();Run the task every thirty minutes
->hourly();Run the task every hour
->hourlyAt(17);Run the task every hour at 17 mins past the hour
->daily();Run the task every day at midnight
->dailyAt(’13:00′);Run the task every day at 13:00
->twiceDaily(1, 13);Run the task daily at 1:00 & 13:00
->weekly();Run the task every week
->weeklyOn(1, ‘8:00’);Run the task every week on Tuesday at 8:00
->monthly();Run the task every month
->monthlyOn(4, ’15:00′);Run the task every month on the 4th at 15:00
->quarterly();Run the task every quarter
->yearly();Run the task every year
->timezone(‘America/New_York’);Set the timezone

app/Console/Kernel.php

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;

use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel

{

/**

* The Artisan commands provided by your application.

*

* @var array

*/

protected $commands = [

Commands\DemoCron::class

];

/**

* Define the application's command schedule.

*

* @param \Illuminate\Console\Scheduling\Schedule $schedule

* @return void

*/

protected function schedule(Schedule $schedule)

{

$schedule->command('demo:cron')

->everyMinute();

}

/**

* Register the commands for the application.

*

* @return void

*/

protected function commands()

{

$this->load(__DIR__.'/Commands');

require base_path('routes/console.php');

}

}

步骤4:运行scheduler命令以进行测试

现在无涯教程已准备好运行Cron,因此您可以使用以下命令手动检查您的Cron命令。

php artisan schedule:run

运行以上命令后,您可以检查已打印一些文本的日志文件。

storage/logs/laravel.php

[2019-04-24 03:46:42] local.INFO: Cron is working fine!

[2019-04-24 03:46:52] local.INFO: Cron is working fine!

[2019-04-24 03:46:55] local.INFO: Cron is working fine!

最后,您可以在调度任务上管理此命令,您必须向服务器的Crontab文件添加一个记录:

* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1

OR

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构实战160讲 -〔杨波〕

玩转Spring全家桶 -〔丁雪丰〕

消息队列高手课 -〔李玥〕

Java业务开发常见错误100例 -〔朱晔〕

手机摄影 -〔@随你们去〕

朱涛 · Kotlin编程第一课 -〔朱涛〕

快手 · 移动端音视频开发实战 -〔展晓凯〕

现代React Web开发实战 -〔宋一玮〕

工程师个人发展指南 -〔李云〕

好记忆不如烂笔头。留下您的足迹吧 :)