我想从控制器获取计划任务列表。 Some packages,articles甚至StackOverflow解释了如何从命令中显示它,但我没有找到如何在没有命令的情况下执行此操作。我的目标是获得一系列计划任务及其日期和描述。
有没有办法从控制器将计划任务作为数组(或对象列表,或任何易于处理的事物)?
答案 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
2018-01-10 16:50:49