dragonmantank/cron-expression

PHP的CRON表达式:计算下一次或上一次运行日期,并确定CRON表达式是否应运行

资助包维护!
dragonmantank

安装数: 309,231,975

依赖项: 386

建议者: 13

安全性: 0

星标: 4,543

关注者: 17

分支: 335

开放问题: 26

v3.3.3 2023-08-10 19:36 UTC

README

Latest Stable Version Total Downloads Tests StyleCI

PHP cron表达式解析器可以解析CRON表达式,确定它是否应该运行,计算表达式的下一次运行日期和上一次运行日期。您可以通过跳过匹配日期的数量来计算未来或过去很长时间的日期。

解析器可以处理范围的增量(例如 */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@midnight - 每天运行一次,午夜 - 0 0 * * *
  • @hourly - 每小时运行一次,第一分钟 - 0 * * * *

要求

  • PHP 7.2+
  • 需要PHPUnit来运行单元测试
  • 需要Composer来运行单元测试

使用cron-expression的项目