禁用计划作业
Posted
技术标签:
【中文标题】禁用计划作业【英文标题】:Disable a scheduled job 【发布时间】:2022-01-01 05:21:02 【问题描述】:我有一个包含多个预定作业的实时 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 |
【问题讨论】:
【参考方案1】:您可以配置一个全局变量或数据库标志,每次在运行命令逻辑之前都会检查它。
例如:
<?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...
...
【讨论】:
谢谢,这确实有效。我们确实已经有一个全局覆盖,我想我必须为每个时间表构建一个,感觉就像我忽略的工匠 cli 中应该有一些东西可以在不更改代码的情况下做到这一点! @AidenFry 据我所知,没有办法禁用命令执行。我建议您创建不同的参数以从 db 启用/禁用它们。 感谢赞赏。以上是关于禁用计划作业的主要内容,如果未能解决你的问题,请参考以下文章