2017 © Pedro Peláez
 

library cron-expr

Ultra lightweight Cron Expression parser for PHP

image

adhocore/cron-expr

Ultra lightweight Cron Expression parser for PHP

  • Sunday, July 22, 2018
  • by adhocore
  • Repository
  • 3 Watchers
  • 8 Stars
  • 125 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 6 Versions
  • 733 % Grown

The README.md

adhocore/cron-expr

Latest Version Travis Build Scrutinizer CI Codecov branch StyleCI Software License Tweet Support , (*1)

  • Lightweight Cron expression parser library for PHP.
  • Zero dependency.
  • Very fast because it bails early in case a segment doesnt match.
  • Real benchmark shows it is about 7.54x to 12.92x faster than dragonmantank/cron-expression

Installation

composer require adhocore/cron-expr

# PHP5.6 or lower
composer require adhocore/cron-expr:0.1.0

Usage

Basic, (*2)

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());

Bulk checks, (*3)

When checking for several jobs at once, if more than one of the jobs share equivalent expression then the evaluation is done only once per go thus greatly improving performnce., (*4)

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 Expression

Cron expression normally consists of 5 segments viz:, (*5)

<minute> <hour> <day> <month> <weekday>

and sometimes there can be 6th segment for <year> at the end., (*6)

Real Abbreviations

You can use real abbreviations for month and week days. eg: JAN, dec, fri, SUN, (*7)

Tags

Following tags are available and they are converted to real cron expressions before parsing:, (*8)

  • @yearly or @annually - every year
  • @monthly - every month
  • @daily - every day
  • @weekly - every week
  • @hourly - every hour
  • @5minutes - every 5 minutes
  • @10minutes - every 10 minutes
  • @15minutes - every 15 minutes
  • @30minutes - every 30 minutes
  • @always - every minute

You can refer them with constants from Ahc\Cron\Normalizer like Ahc\Cron\Normalizer::WEEKLY, (*9)

Modifiers

Following modifiers supported, (*10)

  • Day of Month / 3rd segment:
    • L stands for last day of month (eg: L could mean 29th for February in leap year)
    • W stands for closest week day (eg: 10W is closest week days (MON-FRI) to 10th date)
  • Day of Week / 5th segment:
    • L stands for last weekday of month (eg: 2L is last monday)
    • # stands for nth day of week in the month (eg: 1#2 is second sunday)

LICENSE

© MIT | 2017-2019, Jitendra Adhikari, (*11)

Credits

This project is release managed by please., (*12)

The Versions

22/07 2018

dev-master

9999999-dev

Ultra lightweight Cron Expression parser for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

by Jitendra Adhikari

cron cron-expression cron-parser cron-expr

14/07 2018

v0.0.4

0.0.4.0

Ultra lightweight Cron Expression parser for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4

 

The Development Requires

by Jitendra Adhikari

cron cron-expression cron-parser cron-expr

30/06 2018

v0.0.3

0.0.3.0

Ultra lightweight Cron Expression parser for PHP

  Sources   Download

MIT

The Development Requires

by Jitendra Adhikari

cron cron-expression cron-parser cron-expr

26/10 2017

0.0.2

0.0.2.0

Ultra lightweight Cron Expression parser for PHP

  Sources   Download

MIT

The Development Requires

by Jitendra Adhikari

cron cron-expression cron-parser cron-expr

26/10 2017

dev-develop

dev-develop

Ultra lightweight Cron Expression parser for PHP

  Sources   Download

MIT

The Development Requires

by Jitendra Adhikari

cron cron-expression cron-parser cron-expr

13/06 2017

0.0.1

0.0.1.0

Ultra lightweight Cron Expression parser for PHP

  Sources   Download

MIT

The Development Requires

by Jitendra Adhikari

cron cron-expression cron-parser cron-expr