micahels / mistletoe
Cron 和单次使用任务管理工具,适用于 PHP。
Requires
- php: ~5.5|~7.0
- mtdowling/cron-expression: 1.*
- symfony/console: ~3.0
Requires (Dev)
- phpunit/phpunit: ~5.0
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
This package is not auto-updated.
Last update: 2024-09-14 19:25:39 UTC
README
- todo: 解析注释过的类
- 分离进程(可配置)
- 测试
- 文档,仓库
Mistletoe (PHP Cron Tasks)
因为任务管理应该像圣诞节一样……或者至少不那么糟糕!
Mistletoe 提供了一种超级易于使用的方式来管理 PHP 的 cron 任务。只需使用可读性强的流畅构建器添加任务,将一个 cron 任务指向 mt
文件,然后观察魔法发生。
基本用法
在 mistletoe.php 中
$planner = (new Mistletoe\TaskPlanner()) ->add(\Some\Namespace\UpdateWhatever::class)->always() ->add('SomeOtherClass')->daily()->at('00:30') ->add(new Mistletoe\Command('gulp clean')->daily()->at('1:00')->onProductionOnly() ->add(function(){ echo "do something"; })->every5Minutes();
在你的 crontasks 中,只需添加 /path/to/bin/mt run:due
以执行你想要执行的频率。
完全支持以下功能
- 将所有 cron 作业简化为单个作业
- 环境检测和限制(仅在生产中运行特定任务)
- 任务可以是控制台命令、类或可调用的
- 流畅的 cron 调度构建器
- 包含 TaskRunner
- 轻松创建自定义任务运行器
- CLI 应用程序
- 完全可扩展
- PSR 和 PHP The Right Way 兼容
安装
您可以使用以下三种方式之一使用 mistletoe
作为 Phar(最佳)
您可以从 Phar 下载一个现成的 Box 版本
- 访问 https://github.com/chrismichaels84/mistletoe/releases/latest
- 在“下载”部分下载
mt
- 将其放在您能记住的地方,或者将其添加到您的路径中!
作为全局 Composer 安装(较好)
当您以这种方式安装了其他工具,如 phpunit 时,这可能是一种最好的方式
$ composer global require michaels/mistletoe --prefer-source
您可能需要将 composer 的 bin 目录添加到您的路径中。
作为 Composer 依赖项(高级)
您还可以将 Mistletoe 作为您的 Composer 管理项目的依赖项安装
$ composer require chrismichaels84/mistletoe
(或)
{ "require-dev": { "chrismichaels84/mistletoe": "~0.9" } }
请注意,使用这种方法需要额外的配置步骤,以防止 Mistletoe 的依赖项与您项目的依赖项冲突。
用法
作为命令行工具
设置的最简单方法是创建一个 mistletoe.php
文件来保存您的 cron 任务。该文件只需返回一个配置完毕并准备就绪的 Mistletoe\TaskPlanner
实例。
$planner = (new Mistletoe\TaskPlanner()) ->add(\Some\Namespace\UpdateWhatever::class)->always() ->add('SomeOtherClass')->daily()->at('00:30') ->add(new Mistletoe\Command('gulp clean')->daily()->at('1:00')->onProductionOnly() ->add(function(){ echo "do something"; })->every5Minutes();
从那里,您只需使用 cli 命令。Mistletoe 假设默认的 mistletoe.php
在当前工作目录中。您可以为返回 TaskPlanner 实例的任何文件指定相对路径或绝对路径。
例如
mt list:all
- 假设mistletoe.php
在此目录中mt list:all /full/path/to/file.php
- 将使用完整路径mt list:all ../to/file.php
- 将使用相对路径
命令
list:all
- 列出所有已注册的命令以及有关每个命令的信息list:due
- 仅列出此时应执行的命令以及有关每个命令的信息run:due
- 执行此时应执行的任何命令run:all
- 将强制运行所有已注册的命令run:task Full/Class/Path
- 将仅运行该特定任务,无论其是否到期help
- 显示此指南
选项
如果将详细程度设置为“verbose”或更高,则将打印额外信息。
mt list:all -v
有关更多信息,请参阅 https://symfony.com.cn/doc/current/components/console/introduction.html#verbosity-levels
设置 TaskPlanner
配置文件只需返回一个配置好的TaskPlanner实例。有几种方法可以轻松设置它。更多选项,请参阅Mistletoe\TaskPlanner
。
注意:至少需要一个add()
方法。
$planner = (new TaskPlanner()) ->setTaskRunner(new CustomTaskRunner()) // Optional: Must implement Mistletoe\Contracts\TaskRunnerInterface ->setCurrentEnvironment('development') // Optional // Add a simple task to run every minute ->add('SomeClass')->always() // Add Tasks as Classes, Console Commands, or Callables ->add(SomeClass::class)->always() ->add(new Mistletoe\Command('curl http://google.com/')->always() ->add(function () { echo 'something' })->always() ->add(new CustomTask())->always() // implements RunnableInterface // Add Tasks in a Chain, also as class, command, or callable ->add(SomeClass::class)->always()->followedBy('SomeOtherClass') // Only run on certain environments ->add(SomeClass::class)->always()->onProductionOnly() ->add(SomeClass::class)->always()->onDevelopmentOnly() ->add(SomeClass::class)->always()->onEnvironment('SomethingCustom') // Give it a specific cron schedule ->add('SomeTask)->schedule('* 10 * 5 3') // Use the Fluent Builder to control scheduling ->add('SomeTask)->yearly()->onMonth(6)->onDay(16) ->add('SomeTask)->monthly()->onDay(21) ->add('SomeTask)->weekly()->onMonday() ->add('SomeTask')->daily()->at('1:00') ->add('SomeTask')->hourly()->atMinute(10)->andAtMinute(55) ->add('SomeTask)->every3Hours() // every{X}Hours() ->add('SomeTask)->every22Minutes() ->add('SomeTask)->daily()->atMidnight()j ->add('SomeTask)->daily()->atHour(7)->andAtHour(12) // And Mix and Match to your hearts content... return $planner;
变更日志
请参阅CHANGELOG以获取最近更改的更多信息。
测试
$ composer test
贡献
请参阅CONTRIBUTING和CONDUCT以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件::author_email联系,而不是使用问题跟踪器。
致谢
- Michael Wilson
- 特别感谢FBS
许可证
MIT许可证(MIT)。更多信息请参阅许可证文件。