简介
Cron 定时任务是 Linux 中非常常用的功能。通过 Cron 脚本能使计划任务定期地在系统后台自动运行。
Crontab 是用来记录在特定时间运行的 Cron 的一个脚本文件。
在服务器上通过 crontab -e 来新增或编辑 Cron 条目,通过 crontab -l 查看已存在的 Cron 条目列表。
在以前,开发者要为每一个需要执行的定时任务编写一个 Cron 条目,这是很让人头疼的事。你的任务调度不在源码控制中,你必须使用 SSH 登录到服务器后添加这些 Cron 条目。
Laravel 的命令调度器允许你流式地定义命令调度,在服务器上只需要一个 Cron 条目即可。
任务调度定义在 app/Console/Kernel.php 文件的 schedule 方法中。
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
}
开启调度器
想要开启调度器,你唯一需要添加到服务器的 Cron 条目为:
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
该 Cron 会每分钟调用一次 Laravel 命令调度器,然后,Laravel 会自动评估你的调度任务并运行到期的任务。
定义任务调度
在 App\Console\Kernel.php 文件的 schedule 方法中定义所有的调度任务。
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* 应用提供的 Artisan 命令
*
* @var array
*/
protected $commands = [
//
];
/**
* 定义应用的调度任务
*
* @return void
*/
protected function schedule(Schedule $schedule)
{
// 每个小时执行一次 inspire 命令
$schedule->command('inspire')->hourly();
// 每天凌晨执行闭包
$schedule->call(function () {
echo 'test';
})->