如何在 运行 预定义的 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
我正在从事 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