禁用计划作业
Disable a scheduled job
我有一个实时 PHP/Laravel 项目,其中包含多个计划作业,
客户要求禁用其中一项工作,
有没有办法通过命令行禁用其中一个计划作业?
我当然可以注释掉 console\kernel.php 中注册任务的代码,但这只是暂时的,我不想更改代码并发布只为完成这一项任务。
+-------------+-----------------------------------------------+
| Cron | Command |
+-------------+-----------------------------------------------+
| 0 23 * * 7 | 'artisan' export:blahblah |
| 0 1 5 * * | 'artisan' invoices:somejob | <---- i want to disable just this one job
| 30 1 * * * | 'artisan' invoices:blahblahblah |
您可以配置一个全局变量或数据库标志,每次在 运行 命令逻辑之前都会检查它。
例如:
<?php
class InvoicesCommand {
...
// handles invoices:somejob command
public function handle() {
// get command flag (can be set from .env too, or however you want)
$invoicesCommandFlag = Configuration::where('key', 'invoices_command_flag')->firstOrFail();
// check if command is "enabled"
if (!$invoicesCommandFlag->value) {
\Log::debug('Command disabled. Aborting.');
return;
}
// do stuff...
}
...
}
我有一个实时 PHP/Laravel 项目,其中包含多个计划作业, 客户要求禁用其中一项工作, 有没有办法通过命令行禁用其中一个计划作业?
我当然可以注释掉 console\kernel.php 中注册任务的代码,但这只是暂时的,我不想更改代码并发布只为完成这一项任务。
+-------------+-----------------------------------------------+
| Cron | Command |
+-------------+-----------------------------------------------+
| 0 23 * * 7 | 'artisan' export:blahblah |
| 0 1 5 * * | 'artisan' invoices:somejob | <---- i want to disable just this one job
| 30 1 * * * | 'artisan' invoices:blahblahblah |
您可以配置一个全局变量或数据库标志,每次在 运行 命令逻辑之前都会检查它。
例如:
<?php
class InvoicesCommand {
...
// handles invoices:somejob command
public function handle() {
// get command flag (can be set from .env too, or however you want)
$invoicesCommandFlag = Configuration::where('key', 'invoices_command_flag')->firstOrFail();
// check if command is "enabled"
if (!$invoicesCommandFlag->value) {
\Log::debug('Command disabled. Aborting.');
return;
}
// do stuff...
}
...
}