Cron — API
localzet\CronParser
Заголовок раздела «localzet\CronParser»isValid(string $rule): bool
Заголовок раздела «isValid(string $rule): bool»Принимает пять или шесть разделённых пробелами полей. Строка обрезается по краям; несколько пробельных символов между полями допустимы. Имена месяцев/дней и макросы не поддерживаются.
Возвращает false при неподдерживаемой форме, нулевом или некорректном шаге. Числа вне диапазона могут превратиться в пустой набор значений и при этом не привести к false. Проверка не ищет будущую календарную дату срабатывания.
parse(string $rule, ?int $startTime = null): array
Заголовок раздела «parse(string $rule, ?int $startTime = null): array»| Параметр | Поведение |
|---|---|
$rule | Та же строка, что принимает isValid(). Если проверка вернула false, выбрасывается InvalidArgumentException. |
$startTime | Unix timestamp. При null используется time(). Секунды не нормализуются. |
| Результат | Массив Unix timestamps выбранной минуты, либо [], если календарные поля не совпали. |
Формат сегмента влияет на последовательность секунд. 0,30,0 сохраняет повтор нуля; список не дедуплицируется автоматически. Не полагайтесь на сортировку произвольного списка: он обрабатывается в указанном порядке. При пяти полях единственная секунда — 0.
parse() не устанавливает таймеров и не вызывает callbacks.
localzet\Cron
Заголовок раздела «localzet\Cron»Создание задания
Заголовок раздела «Создание задания»new Cron(string $rule, $callback, string $name = '')Конструктор сохраняет правило, callback и имя, назначает ID и добавляет объект в статический реестр. Первый конструктор в процессе запускает инициализацию таймеров. $callback не имеет callable type declaration в сигнатуре; передавайте действительный callable и проверяйте правило заранее.
Пустое правило или ложное значение callback пропускается сканером. Имя не задаёт уникальность: задания с одинаковыми именами остаются отдельными регистрациями.
Чтение состояния
Заголовок раздела «Чтение состояния»| Метод | Возвращает |
|---|---|
getRule(): string | Исходную строку правила. |
getCallback() | Сохранённое значение callback; проверка callable в этом getter не выполняется. |
getName(): string | Прикладное имя задания. |
getId(): int | ID внутри текущего процесса. |
Cron::getAll(): array | Карту id => Cron, а не список будущих времён. |
Отмена регистрации
Заголовок раздела «Отмена регистрации»$job->destroy(): bool вызывает Cron::remove($job->getId()).
Cron::remove($id): bool принимает числовой ID либо объект Cron. Возвращает true при удалении существующей регистрации, false при отсутствии. Вызовы допустимо повторять.
Ни destroy(), ни remove() не удаляют уже запланированные одноразовые таймеры. Также они не останавливают общий timer сканирования; он продолжает планироваться даже при пустом реестре.
Чего библиотека не обеспечивает
Заголовок раздела «Чего библиотека не обеспечивает»Нет persistent job store, retry/backoff, distributed lock, управления пропущенными запусками, ограничения конкурентных выполнений и учёта результата задания. Изменение часового пояса или системного времени влияет на последующие календарные проверки. Эти свойства нужно реализовать в приложении либо выбрать другой планировщик под соответствующий контракт.