mtdowling/cron-expression

此包已被废弃,不再维护。作者建议使用dragonmantank/cron-expression包。

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

v1.2.3 2019-12-28 04:23 UTC

This package is not auto-updated.

Last update: 2020-01-15 09:52:26 UTC


README

Latest Stable Version Total Downloads Build Status

注意 此分支已被弃用,开发已转移到https://github.com/dragonmantank/cron-expression。更多信息可以在博客文章这里找到。简而言之 - v2.0.0 是一个重大变更,@dragonmantank 可以在单独的分支中更好地管理该项目。

PHP 的 CRON 表达式解析器可以解析 CRON 表达式,确定它是否应该运行,计算表达式的下一次运行日期,以及计算表达式的上一次运行日期。您可以通过跳过 n 个匹配日期来计算未来的日期或过去的日期。

解析器可以处理范围的增加(例如 */12, 2-59/3),间隔(例如 0-9),列表(例如 1,2,3),W 以找到给定月份的最近的工作日,L 以找到月份的最后一天,L 以找到给定月份的最后一个指定工作日,以及 hash(#) 以找到给定月份的第 n 个工作日。

安装

将依赖项添加到您的项目中

composer require mtdowling/cron-expression

用法

<?php

require_once '/vendor/autoload.php';

// Works with predefined scheduling definitions
$cron = Cron\CronExpression::factory('@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 = Cron\CronExpression::factory('3-59/15 2,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 = Cron\CronExpression::factory('@daily');
echo $cron->getNextRunDate(null, 2)->format('Y-m-d H:i:s');

// Calculate a run date relative to a specific time
$cron = Cron\CronExpression::factory('@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)

要求

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