phpsoftbox / scheduler
Scheduler component for the PhpSoftBox framework
v1.0.0
2026-09-29 10:26 UTC
Requires
- php: ^8.5
- psr/clock: ^1.0
- psr/container: ^2.0
- psr/simple-cache: ^3.0
Requires (Dev)
- phpsoftbox/cli-app: ^1.0
- phpsoftbox/cs-fixer: ^1.2.2
- phpsoftbox/queue: ^1.0
- phpunit/phpunit: ^13.3
Suggests
- ext-pcntl: Lets schedule:work stop gracefully on SIGTERM/SIGINT after the current tick.
- ext-redis: Required by RedisScheduleLockStore for atomic distributed scheduler locks
- phpsoftbox/cli-app: Required for schedule:run and schedule:work commands.
- phpsoftbox/queue: Required for onQueue() tasks and SchedulerQueueJobHandler.
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-29 11:56:09 UTC
README
About
phpsoftbox/scheduler — планировщик задач с cron-выражениями и удобным API для расписаний. Позволяет регистрировать задания и запускать их только в нужное время.
Ключевые свойства:
Schedulerдля регистрации задач и запуска по расписаниюScheduledTaskдля настройки расписанийScheduledGroupдля групповых расписанийCronExpressionдля проверки времени- поддержка DI для invokable-обработчиков
- opt-in блокировки пересечений через
withoutOverlapping() - атомарный
onOneServer()для нескольких scheduler-реплик - подробный
ScheduleResultи изоляция ошибок отдельных задач - PSR-20 clock для детерминированного времени
- запуск CLI-команд через
command() - опциональная интеграция с
Queue
Quick Start
use DateTimeImmutable; use PhpSoftBox\Scheduler\Scheduler; $scheduler = new Scheduler(); $scheduler->run(function (DateTimeImmutable $time): void { // задача каждые 5 минут })->every(5)->minutes(); $scheduler->dispatch(new DateTimeImmutable('now'));
Для production/HA передайте атомарный ScheduleLockStoreInterface. Обычный
PSR-16 cache остаётся совместимым single-process fallback, но его контракт не
позволяет гарантировать атомарность между репликами.