有没有办法从控制器将计划任务作为数组?

时间:2018-01-10 14:50:23

标签: php laravel laravel-5 laravel-5.5

我想从控制器获取计划任务列表。 Some packagesarticles甚至StackOverflow解释了如何从命令中显示它,但我没有找到如何在没有命令的情况下执行此操作。我的目标是获得一系列计划任务及其日期和描述。

有没有办法从控制器将计划任务作为数组(或对象列表,或任何易于处理的事物)?

1 个答案:

答案 0 :(得分:2)

以下是获取所有计划任务的方法:

app()->make(\Illuminate\Contracts\Console\Kernel::class);
$schedule = app()->make(\Illuminate\Console\Scheduling\Schedule::class);

$events = collect($schedule->events())->map(function($event) {
    $cron = CronExpression::factory($event->expression);
    $date = Carbon::now();
    if ($event->timezone) {
        $date->setTimezone($event->timezone);
    }
    return (object)[
        'expression' => $event->expression,
        'command' => str_after($event->command, '\'artisan\' '),
        'next_run_at' => $cron->getNextRunDate()->format('Y-m-d H:i:s'),
    ];
});

您有一组具有三个属性的对象($events):

  • 表达 - 示例:12 1 * * *
  • 命令 - 示例:mypackage:mycommand
  • next_run_at - 示例:2018-01-10 16:50:49