locomotivemtl / charcoal-contrib-command
Charcoal contrib 用于处理动态 crontab 脚本作为命令。
Requires
- php: >7.1
- locomotivemtl/charcoal-core: ~0.4
- monolog/monolog: >=1.24.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^7.1
- squizlabs/php_codesniffer: ^3.5
README
一个 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
依赖项
必需
- PHP 7.1+: 建议使用 PHP 7.3+。
- Monolog/monolog: 官方项目日志记录器。
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 文档
- 自动生成的
phpDocumentor
API 文档可在以下位置获取:
https://locomotivemtl.github.io/charcoal-contrib-command/docs/master/ - 自动生成的
apigen
API 文档可在以下位置获取:
https://codedoc.pub/locomotivemtl/charcoal-contrib-command/master/
开发依赖
- [php-coveralls/php-coveralls][phpcov]
- [phpunit/phpunit][phpunit]
- [squizlabs/php_codesniffer][phpcs]
编码风格
charcoal-contrib-command 模块遵循 Charcoal 编码风格
- PSR-1
- PSR-2
- PSR-4,因此自动加载由 Composer 提供。
- phpDocumentor 注释。
- 有关编码标准,请参阅 phpcs.xml.dist 和 .editorconfig。
可以使用
composer phpcs
执行编码风格验证/强制执行。还可以使用composer phpcbf
使用自动修复器。
鸣谢
许可证
Charcoal 采用 MIT 许可证。有关详细信息,请参阅 LICENSE。