user avatar
Initial commit
Johnny Dealer authored
bf447a67
Name Last commit Last update
.idea
README.md
cron.php

Cron Parser

The Cron\Parser class can parse a CRON expression, determine if it is due to run, and calculate the next run date of the expression. The parser can handle simple increment of ranges (e.g. */12), intervals (e.g. 0-9), and lists (e.g. 1,2,3).

Requirements

#. PHP 5.3+

CRON Expressions

A CRON expression is a string representing the schedule for a particular command to execute. The parts of a CRON schedule are as follows:

*    *    *    *    *  command to be executed
-    -    -    -    -
|    |    |    |    |
|    |    |    |    |
|    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
|    |    |    +---------- month (1 - 12)
|    |    +--------------- day of month (1 - 31)
|    +-------------------- hour (0 - 23)
+------------------------- minute (0 - 59)

Использование

<?php


// Работает с макросами (ежечасно, ежемесячно и т.д.)
$cron = new CronExpression('@daily'); //@monthly, @hourly etc.
$cron->isDue();
echo $cron->GetNextRunDate()->format('Y-m-d H:i:s');

// Работает с обычными выражениями
$cron = new CronExpression('* 3 1 * *');
echo $cron->GetNextRunDate()->format('Y-m-d H:i:s')

// Работает с комплексными выражениями
$cron = new CronExpression('*/15 6 */15 5 *');
echo $cron->getNextRunDate()->format('Y-m-d H:i:s');
    
// Работает с относительной датой (смещением)
$cron = new CronExpression('@monthly');
echo $cron->getNextRunDate('2010-01-12 00:00:00')->format('Y-m-d H:i:s');

Отсутствующий функционал в KPHP

Здесь представлен некоторый отсутствующий фукнционал в KPHP, из-за которого требуется находить WorkAround:

#. Нету операторов сравнения для DateTime ($dateTime_1 > $dateTime_2)

#. Нету часовых поясов (dateTime->setTimezone())

#. Нету стандартной фукнции str_contains

#. Нельзя использовать clone для базовых классов