PHPackages                             diontech/laravel-extended-scheduler - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. diontech/laravel-extended-scheduler

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

diontech/laravel-extended-scheduler
===================================

This package allows you to configure the scheduled tasks of the app via (database) model. It was developed to avoid handling theseconfigurations via a config file only, cause then we cannot share the same repo to n server instances when running different tasks is needed at each server.

v1.3.0(4y ago)11.8k2[1 issues](https://github.com/DionTech/laravel-extended-scheduler/issues)[2 PRs](https://github.com/DionTech/laravel-extended-scheduler/pulls)MITPHPPHP ^8.0.2

Since May 27Pushed 2y ago2 watchersCompare

[ Source](https://github.com/DionTech/laravel-extended-scheduler)[ Packagist](https://packagist.org/packages/diontech/laravel-extended-scheduler)[ RSS](/packages/diontech-laravel-extended-scheduler/feed)WikiDiscussions main Synced yesterday

READMEChangelog (6)Dependencies (4)Versions (11)Used By (0)

[![Latest Version](https://camo.githubusercontent.com/ecbef7a4b896f8aa0b3e843e75f644cf71f515151a650c9d932bd6d6097005c2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f64696f6e746563682f6c61726176656c2d657874656e6465642d7363686564756c65723f6c6162656c3d76657273696f6e)](https://packagist.org/packages/diontech/laravel-extended-scheduler/)[![run-tests](https://github.com/DionTech/laravel-extended-scheduler/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/DionTech/laravel-extended-scheduler/actions/workflows/run-tests.yml)[![GitHub last commit](https://camo.githubusercontent.com/689aed843c31345dc4222da078729a1bb702cb8221cc98186fa5a6c6c8c491e5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f64696f6e746563682f6c61726176656c2d657874656e6465642d7363686564756c6572)](https://camo.githubusercontent.com/689aed843c31345dc4222da078729a1bb702cb8221cc98186fa5a6c6c8c491e5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f64696f6e746563682f6c61726176656c2d657874656e6465642d7363686564756c6572)[![GitHub issues](https://camo.githubusercontent.com/f5113129023a256436ce65b45726d8e34bef6dc7392b46761e10a9cfe00e0caa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d7261772f64696f6e746563682f6c61726176656c2d657874656e6465642d7363686564756c6572)](https://camo.githubusercontent.com/f5113129023a256436ce65b45726d8e34bef6dc7392b46761e10a9cfe00e0caa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d7261772f64696f6e746563682f6c61726176656c2d657874656e6465642d7363686564756c6572)[![Packagist Downloads](https://camo.githubusercontent.com/21bc850b919b867987731336f6dc69b068f331a40cd0892995e01d2eb68e0a38/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646d2f64696f6e746563682f6c61726176656c2d657874656e6465642d7363686564756c65722e7376673f6c6162656c3d7061636b6167697374253230646f776e6c6f616473)](https://packagist.org/packages/diontech/laravel-extended-scheduler)[![License](https://camo.githubusercontent.com/5e25f857ea70d6e61023befad1d4195a9196c47ce3e73e4ef77a0d8e2e2e98f3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d6d69742d626c75652e737667)](https://github.com/diontech/laravel-extended-scheduler/blob/main/LICENSE.md)[![Twitter Follow](https://camo.githubusercontent.com/8310805f07f2c4695422721024551912ea1468bf375536177e800d99072204ea/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f64696f6e5f746563683f7374796c653d736f6369616c)](https://camo.githubusercontent.com/8310805f07f2c4695422721024551912ea1468bf375536177e800d99072204ea/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f64696f6e5f746563683f7374796c653d736f6369616c)

Extend Laravel scheduler to can config tasks via model
======================================================

[](#extend-laravel-scheduler-to-can-config-tasks-via-model)

This package allows you to configure the scheduled tasks of the app via (database) model. It was developed to avoid handling these configurations via a config file only, cause then we cannot share the same repo to n server instances when running different tasks is needed at each server.

This package will extend the laravel scheduler, so all coded scheduled tasks will still be available.

releases / laravel support
==========================

[](#releases--laravel-support)

- laravel 8: v1.2.x
- laravel 9: v1.3.x

installation
============

[](#installation)

```
composer require diontech/laravel-extended-scheduler
```

```
php artisan migrate
```

using
=====

[](#using)

Facade based handling
---------------------

[](#facade-based-handling)

Instead of used model based handling mentioned below, you can also do Facade based handling, like:

```
\DionTech\Scheduler\Support\Facades\ScheduledCommand\ScheduledCommand::arguments([
    'foo'
])->fluent([
    'cron' => [
        '* * * * *'
    ]
])->isActive()
->create();
```

Model based handling
--------------------

[](#model-based-handling)

At the moment you can do something similar to the following:

```
        \DionTech\Scheduler\Models\ScheduledCommand::create([
            'method' => 'command',
            'arguments' => [
                'schedule:list'
            ],
            'fluent' => [
                'cron' => ['* * * * *']
            ],
            'is_active' => true
        ]);

        \DionTech\Scheduler\Models\ScheduledCommand::create([
            'method' => 'command',
            'arguments' => [
                'foo'
            ],
            'fluent' => [
                'weekdays',
                'hourly',
                'timezone' => ['America/Chicago'],
                'between' => ['8:00', '17:00']
            ],
            'is_active' => true
        ]);

        \DionTech\Scheduler\Models\ScheduledCommand::create([
            'method' => 'command',
            'arguments' => [
                'test:command',
                ['Taylor', '--force']
            ],
            'fluent' => [
                'daily'
            ],
            'is_active' => true
        ]);

        \DionTech\Scheduler\Models\ScheduledCommand::create([
            'method' => 'job',
            'arguments' => [
                'new \App\Jobs\TestJob', 'sqs'
            ],
            'fluent' => [
                'everyFiveMinutes'
            ],
            'is_active' => true
        ]);
```

See  to get an idea of how it can be used.

### normalizing inserted model to readable structure

[](#normalizing-inserted-model-to-readable-structure)

```
        $model = \DionTech\Scheduler\Models\ScheduledCommand::create([
            'method' => 'command',
            'arguments' => [
                'foo'
            ],
            'fluent' => [
                'weekdays',
                'hourly',
                'timezone' => ['America/Chicago'],
                'between' => ['8:00', '17:00']
            ],
            'is_active' => true
        ]);

    $event = $model->event(); //returns \Illuminate\Console\Scheduling\Event
    $command = $event->command; //something like "/usr/local/Cellar/php@7.4/7.4.16/bin/php' 'artisan' foo"
    $expression = $event->expression; //something like "0 * * * 1-5"
    $description = $event->description; //something like "new \App\Jobs\TestJob"
```

### make a command active / inactive

[](#make-a-command-active--inactive)

Each ScheduledCommand can be set to inactive / active by its property 'is\_active'. the default value is false, so you must explicitly activate the command to be recognized in the laravel scheduler.

### add description / notices to the command

[](#add-description--notices-to-the-command)

Each ScheduledCommand have a property 'description', where you can save additional notices if needed.

get all registered / available commands of your application
-----------------------------------------------------------

[](#get-all-registered--available-commands-of-your-application)

### model based

[](#model-based)

```
$commands = (new \DionTech\Scheduler\Support\Helper\CommandLister)->all();
```

### request response based

[](#request-response-based)

insert this in your controller, that's it:

```
return (new \DionTech\Scheduler\Http\Responses\ListAllCommandsResponse())
    ->toResponse($request);
```

NextSteps
=========

[](#nextsteps)

- writing an API class
- make getCommands() method cacheable
- build some configs

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity22

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 95.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~54 days

Recently: every ~68 days

Total

6

Last Release

1537d ago

PHP version history (2 changes)v1.0.0PHP ^7.4|^8.0

v1.3.0PHP ^8.0.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/76866294?v=4)[Daniel Koch](/maintainers/DionTech)[@DionTech](https://github.com/DionTech)

---

Top Contributors

[![DionTech](https://avatars.githubusercontent.com/u/76866294?v=4)](https://github.com/DionTech "DionTech (47 commits)")[![comes](https://avatars.githubusercontent.com/u/592262?v=4)](https://github.com/comes "comes (1 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

---

Tags

cronlaravelschedulescheduler

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/diontech-laravel-extended-scheduler/health.svg)

```
[![Health](https://phpackages.com/badges/diontech-laravel-extended-scheduler/health.svg)](https://phpackages.com/packages/diontech-laravel-extended-scheduler)
```

###  Alternatives

[wireui/wireui

TallStack components

1.8k1.3M16](/packages/wireui-wireui)[livewire/volt

An elegantly crafted functional API for Laravel Livewire.

4195.3M84](/packages/livewire-volt)[ramonrietdijk/livewire-tables

Dynamic tables for models with Laravel Livewire

21147.4k](/packages/ramonrietdijk-livewire-tables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
