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
для базовых классов