如何在 运行 预定义的 artisan 命令时忽略控制台命令

How to ignore Console Command while running a pre defined artisan command

我正在从事 CronJob 工作由控制台命令处理的项目。这些命令是手动开发的,以服务于数据库上的不同作业。

但现在的问题是当我们运行

php artisan cache:clear

它首先检查在控制台文件夹下创建的所有命令,然后运行检查 cache:clear 命令。所以很明显这个命令 运行ning 超级慢。因为它经历了 15 个手动创建的命令。

所以有没有一种方法可以在 运行 迁移、缓存、配置、查看命令时忽略那些手动命令。 这些命令只有在我们手动调用时才有效?

我已经检查过使用以下方法将其隐藏,但没有用

使用隐藏命令隐藏属性

class updateAPILogSync extends Command
{
    protected $signature = 'apilog:update';
    protected $description = 'Serve function to sync the log to migrant DB';
    protected $hidden = true;
}

使用setHidden方法隐藏

class updateAPILogSync extends Command
{
    protected $signature = 'apilog:update';
    protected $description = 'Serve function to sync the log to migrant DB';
    public function __construct()
    {
        parent::__construct();
        $this->setHidden(true);
    }
}

请指导我。我如何忽略此手动命令并加快 pre-defined 命令

请检查您的命令,看看这些作业是否正在从构造函数中执行。 如果它是从构造函数加载的,那么在执行任何命令时它将是 运行ning。因为当我们 运行 来自 cli 的任何命令时,它都会构建每个命令。所以只需将它移动到 handle() 而不是 __construct()

您可以尝试自己实现如何注册命令 https://laravel.com/docs/8.x/artisan#registering-commands