Laravel自动每日检查

时间:2017-11-21 08:38:48

标签: laravel laravel-5

我收到了用户的请求。 目标是尽快处理它们。 初始估计时间为5天,添加到开始日期,在此日期内将处理请求。 我想确保如果没有遵守估计的时间并更新请求的状态。 我不知道该使用什么以及如何使用它。 我创建了一个命令,每个Minute"它应该"工作但没什么。 如果我使用带终端的命令,它可以工作!

Kernel.php

protected $commands = [
    '\App\Console\Commands\CheckDateEnd',
];

protected function schedule(Schedule $schedule)
{
    // $schedule->command('inspire')
    //          ->hourly();

    $schedule->command('CheckDateEnd:checkDateEnd')
        ->everyMinute();
}

protected function commands()
{
    require base_path('routes/console.php');
}

CheckDateEnd.php

protected $signature = 'CheckDateEnd:checkDateEnd';

protected $description = 'Termine stimati verificati!';

public function __construct()
{
    parent::__construct();
}

public function handle()
{
    \DB::table('richieste')
        ->whereDate('termine_stimato','<=',Carbon::now())
    ->update(['stato' => 3]);

    $this->info('Termine stimati verificati!');
}

1 个答案:

答案 0 :(得分:-1)

您可以在laravel中使用作业或计划任务

预定时间:

$schedule->call(function () {
    //your command
})->daily();

作业有点复杂但更灵活,因为您也可以在控制器上调用队列

文档:

用于启动计划任务,只需调用

php /path-to-your-project/artisan schedule:run

但最好在linux / unix系统上安装crontab

crontab -e

添加

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