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.
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer
emarref/xdebug-bundle
emarref/pubnub-bundle
elriseio/finance-money-bundle