javanile / cron-expression
PHP 的 CRON 工具:计算下一次或上一次运行日期,并确定 CRON 表达式是否应运行
资助包维护!
dragonmantank
v3.1.0
2020-11-24 19:55 UTC
Requires
- php: ^7.2|^8.0
- webmozart/assert: ^1.7.0
Requires (Dev)
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^0.12
- phpstan/phpstan-webmozart-assert: ^0.12.7
- phpunit/phpunit: ^7.0|^8.0|^9.0
Replaces
README
PHP CRON 表达式解析器可以解析 CRON 表达式,确定它是否应该运行,计算表达式的下一次运行日期,以及计算表达式的上一次运行日期。您可以通过跳过 n 个匹配日期来计算未来的日期或过去的日期。
解析器可以处理范围增量(例如 */12, 2-59/3)、间隔(例如 0-9)、列表(例如 1,2,3)、W 以找到给定月份的最近工作日,L 以找到月份的最后一天,L 以找到月份的最后一个给定工作日,以及 hash (#) 以找到给定月份的第 n 个工作日。
有关此分支的更多信息,请参阅博客文章 此处。tl;dr - v2.0.0 是一个重大变更,@dragonmantank 可以在单独的分支中更好地维护项目。
安装
将依赖项添加到您的项目中
composer require dragonmantank/cron-expression
用法
<?php require_once '/vendor/autoload.php'; // Works with predefined scheduling definitions $cron = new Cron\CronExpression('@daily'); $cron->isDue(); echo $cron->getNextRunDate()->format('Y-m-d H:i:s'); echo $cron->getPreviousRunDate()->format('Y-m-d H:i:s'); // Works with complex expressions $cron = new Cron\CronExpression('3-59/15 6-12 */15 1 2-5'); echo $cron->getNextRunDate()->format('Y-m-d H:i:s'); // Calculate a run date two iterations into the future $cron = new Cron\CronExpression('@daily'); echo $cron->getNextRunDate(null, 2)->format('Y-m-d H:i:s'); // Calculate a run date relative to a specific time $cron = new Cron\CronExpression('@monthly'); echo $cron->getNextRunDate('2010-01-12 00:00:00')->format('Y-m-d H:i:s');
CRON 表达式
CRON 表达式是一个字符串,表示特定命令的执行计划。CRON 计划的各个部分如下
* * * * *
- - - - -
| | | | |
| | | | |
| | | | +----- day of week (0 - 7) (Sunday=0 or 7)
| | | +---------- month (1 - 12)
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- min (0 - 59)
此库还支持一些宏
@yearly
,@annually
- 每年运行一次,午夜,1 月 1 日 -0 0 1 1 *
@monthly
- 每月运行一次,午夜,月初 -0 0 1 * *
@weekly
- 每周运行一次,每周日午夜 -0 0 * * 0
@daily
- 每天运行一次,午夜 -0 0 * * *
@hourly
- 每小时运行一次,每小时的第一个分钟 -0 * * * *
要求
- PHP 7.1+
- 运行单元测试需要 PHPUnit
- 运行单元测试需要 Composer
使用 cron-expression 的项目
- 是 Laravel 框架 的一部分
- 作为 Symfony Bundle - setono/cron-expression-bundle 提供
- 框架无关,基于 PHP 的作业调度器 - Crunz