定时任务

实验环境

操作系统: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 定义一个记录日志的方法。

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.

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