adhocore / cron-expr
PHP的超轻量级Cron表达式解析器
1.1.3
2021-10-20 07:43 UTC
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^6.5 || ^7.5
README
- PHP的轻量级Cron表达式解析库。
- 无依赖。
- 非常 快速,因为它在某个部分不匹配时会立即退出。
- 真实 基准测试 显示它比
dragonmantank/cron-expression
快约 7.54x 到 12.92x。
安装
composer require adhocore/cron-expr
# PHP5.6 or lower
composer require adhocore/cron-expr:0.1.0
使用方法
基本
use Ahc\Cron\Expression; use Ahc\Cron\Normalizer; Expression::isDue('@always'); Expression::isDue(Normalizer::HOURLY, '2015-01-01 00:00:00'); Expression::isDue('*/20 * * * *', new DateTime); Expression::isDue('5-34/4 * * * *', time()); // Dont like static calls? Below is possible too! $expr = new Expression; $expr->isCronDue('*/1 * * * *', time());
批量检查
在同时检查多个任务时,如果多个任务具有等效的表达式,则评估只进行一次,从而大大提高性能。
use Ahc\Cron\Expression; $jobs = [ 'job1' => '*/2 */2 * * *', 'job1' => '* 20,21,22 * * *', 'job3' => '7-9 * */9 * *', 'job4' => '*/5 * * * *', 'job5' => '@5minutes', // equivalent to job4 (so it is due if job4 is due) 'job6' => '7-9 * */9 * *', // exact same as job3 (so it is due if job3 is due) ]; // The second param $time can be used same as above: null/time()/date string/DateTime $dues = Expression::getDues($jobs, '2015-08-10 21:50:00'); // ['job1', 'job4', 'job5'] // Dont like static calls? Below is possible too! $expr = new Expression; $dues = $expr->filter($jobs, time());
Cron表达式
Cron表达式通常由5个部分组成,即
<minute> <hour> <day> <month> <weekday>
有时在末尾还可以有第六部分用于<year>
。
真实缩写
您可以使用月份和星期的真实缩写,例如:JAN
、dec
、fri
、SUN
。
标签
以下标签可用,并在解析之前将它们转换为真实Cron表达式
- @yearly 或 @annually - 每年
- @monthly - 每月
- @daily - 每天
- @weekly - 每周
- @hourly - 每小时
- @5minutes - 每五分钟
- @10minutes - 每十分钟
- @15minutes - 每十五分钟
- @30minutes - 每三十分钟
- @always - 每分钟
您可以使用来自
Ahc\Cron\Normalizer
的常量来引用它们,例如Ahc\Cron\Normalizer::WEEKLY
。
修饰符
支持以下修饰符
- 月份中的某天 / 第3部分
L
表示月份的最后一天(例如:在闰年中,L
可以表示2月的29日)W
表示最接近的星期几(例如:10W
是最接近的星期一至星期五到10日的日期)
- 星期几 / 第5部分
L
表示月份的最后工作日(例如:2L
是最后一个星期一)#
表示月份中第n个工作日(例如:1#2
是第二个星期日)
LICENSE
© MIT | 2017-2019, Jitendra Adhikari
致谢
此项目由 please 管理发布。