K

KPHP_cron-expression

user avatar
Added composer package
Johnny Dealer authored
3b3666a1
Name Last commit Last update
.gitignore
README.md
composer.json
cron.php

Cron Expression

Данная библиотека сделана специально для KPHP, чтобы код компилировался (транспайлился) без ошибок

General information

Класс Cron Expression может анализировать выражение CRON, определять, должно ли оно выполняться, и вычислять дату следующего выполнения выражения. Парсер может обрабатывать макросы (@daily, @monthly), простое увеличение диапазонов (например, */12), интервалов (например, 0-9) и списков (например, 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 для базовых классов