Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Scheduler Laravel Package

abc/scheduler

Experimental PHP scheduler library for running jobs based on CRON expressions. Define schedule providers and processors via simple interfaces, bind them in a Scheduler, and execute due schedules with an included Symfony Console command (abc:schedule).

View on GitHub
Deep Wiki
Context7

A PHP library to process schedules based on CRON expressions

Frequently asked questions about Scheduler
How does abc/scheduler compare to Laravel’s built-in schedule:run for dynamic cron jobs?
Laravel’s schedule:run is best for static cron jobs defined in `app/Console/Kernel.php`. This package excels for dynamic schedules—like fetching cron expressions from a database at runtime—via its `ProviderInterface`. It’s modular but requires manual integration with Laravel’s queue system or job dispatching.
Can I use this package to replace Laravel’s schedule:run entirely?
Technically yes, but it’s experimental. You’d need to migrate all cron jobs to implement `ProviderInterface` and `ProcessorInterface`, then replace `schedule:run` with `abc:schedule` in deployment scripts. Test thoroughly, as edge cases (like timezone handling) may differ from Laravel’s native scheduler.
Does abc/scheduler support Laravel’s queue system for job execution?
No, it doesn’t integrate natively with Laravel queues. Your `ProcessorInterface` must manually dispatch jobs (e.g., via `dispatch()`) or execute logic directly. For async tasks, pair it with Laravel’s queue system in your processor implementation.
What Laravel versions does abc/scheduler support?
The package has no Laravel-specific dependencies, so it *should* work with Laravel 8+. However, test thoroughly for Symfony Console compatibility (Laravel uses Symfony’s Console component). Check the GitHub issues for version-specific quirks, as it’s experimental.
How do I fetch cron schedules from a database with this package?
Implement `ProviderInterface` and override `provideSchedules()` to query your database for cron expressions and due dates. Return an array of `ScheduleInterface` objects. Example: Fetch a `schedules` table where `expression` and `next_run` columns map to cron syntax and timestamps.
Can I run abc:schedule in production without conflicts?
Yes, but ensure it runs in a dedicated worker process (e.g., via Supervisor) or alongside `schedule:work`. Avoid overlapping executions by using locks (e.g., Laravel’s `Cache::lock()`) if multiple servers run the scheduler. Monitor logs for conflicts during pilot testing.
What happens if a cron expression is malformed?
The package relies on PHP’s native cron parsing (or `cron-expression` library if installed). Malformed expressions will throw exceptions during schedule evaluation. Validate cron syntax in your `ProviderInterface` or wrap parsing in a try-catch block to log errors gracefully.
Are there alternatives to abc/scheduler for dynamic cron jobs in Laravel?
Yes: Laravel’s `schedule:run` (for static jobs), Spatie’s `laravel-schedule` (database-backed), or queue-based solutions like `laravel-queue-scheduler`. This package stands out for its interface-driven design but lacks Laravel-specific optimizations, so weigh its modularity against stability risks.
How do I test abc/scheduler in a Laravel application?
Mock `ProviderInterface` to return fixed schedules for testing. Use PHPUnit to verify `ProcessorInterface` logic. Test the `ScheduleCommand` via Artisan’s command testing helpers (e.g., `Artisan::call('abc:schedule')`). Focus on edge cases like timezone offsets or overlapping executions.
Will this package work with Laravel’s event system or notifications?
Not natively. Your `ProcessorInterface` must manually dispatch events (e.g., `event(new JobProcessed())`) or notifications (e.g., `Notification::send()`). The package is agnostic to Laravel’s ecosystem, so integrate these features explicitly in your processor logic.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky