LARAVEL:获取一系列计划任务以在管理仪表板中输出

约翰·梅勒

使用Laravel任务计划程序,我在Kernel.php中创建了许多任务

例如:

$schedule->command('some:command')
    ->daily();

$schedule->command('another:command')
    ->daily();

我想显示调度命令的列表以及出现的频率(以及上次/下一次运行时间,可以使用before / after函数记录自己的时间)。

但是我被困在第一个障碍。我不确定该怎么做才能获取已在Kernel.php中定义的计划任务数组

// Example function needs to be created
$tasks = getAllScheduledTasks();

@foreach($tasks as $task)
    <tr>
        <td>{{ $task->name }}</td>
        <td>{{ $task->description }}</td>
    </tr>
@endforeach

简化的问题:如何在Laravel中获得一系列预定任务?

Ohgodwhy

不幸的是,实际上并没有开箱即用的支持。您需要做的就是扩展artisan schedule命令并添加list功能。幸运的是,您可以运行一个简单的类:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Console\Scheduling\Schedule;

class ScheduleList extends Command
{
    protected $signature = 'schedule:list';
    protected $description = 'List when scheduled commands are executed.';

    /**
     * @var Schedule
     */
    protected $schedule;

    /**
     * ScheduleList constructor.
     *
     * @param Schedule $schedule
     */
    public function __construct(Schedule $schedule)
    {
        parent::__construct();

        $this->schedule = $schedule;
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $events = array_map(function ($event) {
            return [
                'cron' => $event->expression,
                'command' => static::fixupCommand($event->command),
            ];
        }, $this->schedule->events());

        $this->table(
            ['Cron', 'Command'],
            $events
        );
    }

    /**
     * If it's an artisan command, strip off the PHP
     *
     * @param $command
     * @return string
     */
    protected static function fixupCommand($command)
    {
        $parts = explode(' ', $command);
        if (count($parts) > 2 && $parts[1] === "'artisan'") {
            array_shift($parts);
        }

        return implode(' ', $parts);
    }
}

这将为您提供一个php artisan schedule:list现在,这并不是您真正需要的,但是您可以通过执行以下命令从Laravel堆栈中轻松获取此列表:

Artisan::call('schedule:list');

这将为您提供schedule命令的列表。

当然,不要忘记注入Facadeuse Illuminate\Support\Facades\Artisan;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

欧拉计划任务17。从一系列数字中查找所有字母的数字

来自分类Dev

映射Javascript中的一系列任务

来自分类Dev

如何在ansible中循环一系列任务

来自分类Dev

在一系列代码中显示输出

来自分类Dev

在终端中查看计划任务的输出

来自分类Dev

哪些指令可用于在计算器中执行一系列计算?

来自分类Dev

从iOS中的一系列对象中获取价值

来自分类Dev

从 jquery 中的一系列值中获取数据

来自分类Dev

NSOperation管理一系列功能

来自分类Dev

从一系列月份中获取当前月份

来自分类Dev

从特定 wiki 文章中获取一系列链接

来自分类Dev

如何从python的列表中获取一系列值?

来自分类Dev

如何根据表列计划任务?

来自分类Dev

获取一系列关联项

来自分类Dev

Beautifulsoup:获取一系列div

来自分类Dev

如何让载波上传器可以在 Rails 管理仪表板中获取 API 的图像链接?

来自分类Dev

仪表板仪表板中的第一行未对齐

来自分类Dev

在WooCommerce管理订单仪表板中更新客户密码

来自分类Dev

基本的仪表板,用于管理Rails中的帖子

来自分类Dev

警报管理器仅触发 Android 中的最后一个计划任务

来自分类Dev

如何在Laravel 4控制器中获取一系列复选框的值(如果选中)

来自分类Dev

如何停止一系列任务但继续在Gulp中监视文件?

来自分类Dev

Laravel 计划任务的问题

来自分类Dev

如何捕获一系列任务的异常

来自分类Dev

Ansible如何循环执行一系列任务?

来自分类Dev

自动化一系列Microsoft Office任务

来自分类Dev

Shinydashboard中的仪表板

来自分类Dev

闪亮的仪表板:仪表板中的粘性页脚

来自分类Dev

闪亮的仪表板:仪表板中的粘性页脚

Related 相关文章

热门标签

归档