实验环境
操作系统:Ubuntu 16.04.1 LTS
参考文章
https://www.cnblogs.com/lamp01/p/6864258.html
https://blog.csdn.net/a_new_steven/article/details/73733087
linux定时任务是由系统自带的crontab功能实现的,可以指定时间间隔或者特定命令的功能。与特定的编程语言和编程环境无关。
此次实验的是PHP laravel框架的定时任务实现
在laravel根目录下生成 cron.txt 文件,内容为
* * * * * php /home/bella/Downloads/lnmp/echo1.0/echo/artisan schedule:run >> /dev/null 2>&1
将文件路径传给crontab,crontab- l执行
crontab cron.txt
crontab -l
便会每分钟执行一次任务了
===================================================================================================
此次cron.txt中包含的PHP命令是定期执行laravel框架中定义的定时任务,所以我们要在laravel补充完整相关的任务定义。
laravel中的定时任务可以有很多种类型,这次我们使用命令的形式来定义定时任务。
在 App\Console\Commands\LogInfo 定义一个记录日志的方法。
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
class LogInfo extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'lesson:log';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Log Info';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
Log::info('Crontab routing job. ');
}
}
Laravel的计划任务调用是在 App\Console\Kernel 中的 schedule 方法中
在command方法中填入我们上面定义的'lesson:log'命令即可。
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
$schedule->command('lesson:log')->everyMinute();
}
如果 laravel目录下的 storage\logs\laravel.log 日志中每个1分钟会出现以下记录,即表示定时任务成功部署
[2018-09-15 10:30:01] local.INFO: Crontab routing job.