locomotivemtl/charcoal-contrib-command

Charcoal contrib 用于处理动态 crontab 脚本作为命令。

0.1.5.1 2021-07-05 15:59 UTC

This package is auto-updated.

Last update: 2024-09-06 00:55:57 UTC


README

License Latest Stable Version Code Quality Coverage Status Build Status

一个 Charcoal contrib,用于提供动态 crontab 脚本,易于调度。

目录

安装

首选(也是唯一支持)的方法是使用 Composer

$ composer require locomotivemtl/charcoal-contrib-command

包含模块

只需在您的 json 配置文件中添加以下模块

"charcoal/command/command": {},

设置 cron

脚本 command/process-queue 与命令模块一起添加。

* * * * * /path/to/bin/php /path/to/vendor/bin/charcoal command/process-queue > /dev/null 2>&1

依赖项

必需

PSR

--TBD--

服务提供商

以下服务是通过使用 charcoal-contrib-command 提供的

服务

  • command/queue-stack: Command\Service\CommandQueuer 实例

配置

命令 contrib 的所有配置都应该在 command 命名空间下。配置允许定义日志记录器的选项,例如处理器、处理程序或格式化程序。所有默认配置都可在 Charcoal\Command\Logger\Config\CommandLoggerConfig 类中找到。

默认值

    "command": {
        "logger": {
            "level": "debug",
            "active": true,
            "handlers": {
                "charcoal/command/logger/handler/charcoal": {
                    "model": "charcoal/command/log",
                    "formatter": {
                        "charcoal/command/logger/formatter/command": {}
                    }
                }
            }
        }
    }

处理器应该由日志记录器处理器通用工厂解析。在给定的示例中,我们看到 Charcoal\Command\Logger\Handler\CharcoalHandler 类。通过处理器定义的选项将通过处理器的构造方法传递。

格式化程序应该由日志记录器格式化程序通用工厂解析。在给定的示例中,我们看到 Charcoal\Command\Logger\Formatter\Command。通过格式化程序定义的选项将通过格式化程序的构造方法传递。

类应该由模型工厂解析。在给定的示例中,我们看到 Charcoal\Command\Log

用法

创建命令类

命令类应该扩展 AbstractCommand 类。您可以使用 setDependencies 公共方法访问任何可能需要的依赖项。当一切准备就绪时,将调用公共方法 execute

接口

  • public AbstractCommand::__invoke ( array $arguments ): 设置参数,执行命令并记录结果
  • public AbstractCommand::setDependencies ( Container $container ): 允许设置任何所需的依赖项
  • protected AbstractCommand::log (): 执行时调用。根据给定选项记录。
  • protected AbstractCommand::setSuccess ( boolean $success ): 定义脚本是否成功执行。
  • abstract protected AbstractCommand::execute (): 实际命令放在这里。

示例

namespace Charcoal\Cache\Command;

[...]

/**
 * Cache clearer command
 */
class ClearCommand extends AbstractCommand
{
    use CachePoolAwareTrait;

    /**
     * @param array $arguments
     */
    public function setDependencies(Container $container)
    {
        parent::setDependencies($container);
        $this->setCachePool($container['cache']);
    }

    /**
     * @return mixed|void
     */
    public function execute()
    {
        $success = $this->cachePool()->clear();
        $this->setSuccess($success);
    }
}

后端表单

使用 CommandQueue 模型来排队新命令。

可用服务

方法

public QueueStack::enqueue ( array $data ) : QueueStack

参数

Array data

  • command: 必需。可解析的命令类字符串。
  • processingDate: 可选。命令应运行的日期。接受任何有效的 DateTime 格式或 DateTime 对象。默认为 now
  • arguments: 选项。传递给命令构造方法的方法参数数组。
示例
    $stack = $container['command/queue-stack'];
    $stack->enqueue([
        'command' => 'charcoal/cache/command/clear',
        'processingDate' => 'NOW +1 day'
    ]);

默认处理日期为"现在"。

开发

安装开发环境

$ composer install

运行脚本(phplint、phpcs 和 phpunit)

$ composer test

API 文档

开发依赖

  • [php-coveralls/php-coveralls][phpcov]
  • [phpunit/phpunit][phpunit]
  • [squizlabs/php_codesniffer][phpcs]

编码风格

charcoal-contrib-command 模块遵循 Charcoal 编码风格

可以使用 composer phpcs 执行编码风格验证/强制执行。还可以使用 composer phpcbf 使用自动修复器。

鸣谢

许可证

Charcoal 采用 MIT 许可证。有关详细信息,请参阅 LICENSE