Switon's scheduled task layer for #[Scheduled] runners, task discovery, locking, and CLI execution.
- Task registration:
#[Scheduled]declares scheduled work on runner classes. - Automatic discovery: app task paths and package metadata are scanned.
- Task execution:
TaskRunnermatches schedules and dispatches tasks. - Distributed locking: Redis-backed exclusivity is available across replicas.
- CLI control:
ScheduleCommandcovers work, run, list, and task inspection.
composer require switon/scheduleuse Switon\Core\RunnerInterface;
use Switon\Schedule\Attribute\Scheduled;
#[Scheduled('0 * * *', lockTtl: 60)]
final class PurgeStaleSessionsTask implements RunnerInterface
{
public function run(mixed $payload): mixed
{
return null;
}
}bash bin/console schedule:list
bash bin/console schedule:runDocs: https://docs.switon.dev/latest/schedule
MIT.