PHPackages                             goksagun/scheduler-bundle - 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. goksagun/scheduler-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

goksagun/scheduler-bundle
=========================

Scheduled task bundle

v2.3.4(1y ago)79.7k7MITPHPPHP ^8.1CI failing

Since Mar 30Pushed 1y ago1 watchersCompare

[ Source](https://github.com/goksagun/scheduler-bundle)[ Packagist](https://packagist.org/packages/goksagun/scheduler-bundle)[ RSS](/packages/goksagun-scheduler-bundle/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (9)Versions (55)Used By (0)

Scheduler Bundle [![PHP Composer Workflow](https://github.com/goksagun/scheduler-bundle/actions/workflows/php.yml/badge.svg)](https://github.com/goksagun/scheduler-bundle/actions/workflows/php.yml)
=====================================================================================================================================================================================================

[](#scheduler-bundle-)

Command scheduler allows you to fluently and expressively define your command schedule within application itself. When using the scheduler, only a single Cron entry is needed on your server. Your task schedule is defined in the `scheduler.yaml` file or `Schedule` annotation or `database`. When using the scheduler, you only need to add the following Cron entry to your server:

```
* * * * * php /path-to-your-project/bin/console scheduler:run >> /dev/null 2>&1
```

This Cron will call the command scheduler every minute. When the `scheduler:run` command is executed, application will evaluate your scheduled tasks and runs the tasks that are due. If you want to run task(s) as asynchronously call the command scheduler with async flag `scheduler:run --async`.

Installation
============

[](#installation)

Make sure Composer is installed globally, as explained in the [installation chapter](https://getcomposer.org/doc/00-intro.md)of the Composer documentation.

Applications that use Symfony Flex
----------------------------------

[](#applications-that-use-symfony-flex)

Open a command console, enter your project directory and execute:

```
$ composer require goksagun/scheduler-bundle
```

Applications that don't use Symfony Flex
----------------------------------------

[](#applications-that-dont-use-symfony-flex)

### Step 1: Download the Bundle

[](#step-1-download-the-bundle)

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

```
$ composer require goksagun/scheduler-bundle
```

### Step 2: Enable the Bundle

[](#step-2-enable-the-bundle)

Then, enable the bundle by adding it to the list of registered bundles in the `config/bundles.php` file of your project:

```
// config/bundles.php

return [
    // ...
    Goksagun\SchedulerBundle\SchedulerBundle::class => ['all' => true],
];
```

Then, add console commands to scheduler yaml file `scheduler.yaml` into `config/packages` directory:

```
scheduler:
    enabled: true
    async: ~
    log: ~
    tasks:
         - { name: command:name argument --option, expression: "* * * * *" }
         - { name: another-command:name, expression: "@hourly" }
```

Or use attribute:

```
use Goksagun\SchedulerBundle\Attribute\Schedule;
use Symfony\Component\Console\Command\Command;

#[Schedule(name: 'command:name argument --option', expression: '*\/10 * * * *')]
class AttributedCommand extends Command
{
    //
}
```

Or use annotation:

```
use Goksagun\SchedulerBundle\Annotation\Schedule;
use Symfony\Component\Console\Command\Command;

/**
 * @Schedule(name="command:name argument --option", expression="*\/10 * * * *")
 */
class AnnotatedCommand extends Command
{
    //
}
```

Or add task(s) to database, you can use `scheduler:add` command to add a task to database:

```
php bin/console scheduler:add 'command:name argument --option' '@daily'
```

If you want to edit task you can use `scheduler:edit` command:

```
php bin/console scheduler:edit [id] 'command:name argument --no-option' '@hourly'
```

If you want to delete task you can use `scheduler:delete` command:

```
php bin/console scheduler:delete [id]
```

If you want to list tasks you can use `scheduler:list` command:

```
php bin/console scheduler:list
```

Step 4: Add the Bundle log table schema (optional)
--------------------------------------------------

[](#step-4-add-the-bundle-log-table-schema-optional)

Then, if you want to track scheduled task(s) add the bundle log table schema and store executed task(s) to db:

```
php bin/console doctrine:schema:update --force
```

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity30

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity85

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 61.5% 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 ~44 days

Recently: every ~123 days

Total

54

Last Release

705d ago

Major Versions

v0.4.7 → v1.0.02019-12-10

v0.4.8 → v1.0.12019-12-16

v1.3.1 → v2.0.02023-04-17

PHP version history (4 changes)v0.0.2PHP ^7.0

v1.0.0PHP ^7.1.3

v1.2.0PHP ^7.1.3|^8.0

v2.0.0PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/76751cb52e5680cb45101b61161bdfd706367010031256574b65eafacd1d161b?d=identicon)[goksagun](/maintainers/goksagun)

---

Top Contributors

[![goksagun](https://avatars.githubusercontent.com/u/1609671?v=4)](https://github.com/goksagun "goksagun (16 commits)")[![yali4](https://avatars.githubusercontent.com/u/5730938?v=4)](https://github.com/yali4 "yali4 (8 commits)")[![rodion-k](https://avatars.githubusercontent.com/u/2526460?v=4)](https://github.com/rodion-k "rodion-k (2 commits)")

---

Tags

croncronjob-schedulerphpsymfonysymfony-bundlesymfony-commandsymfony-consoleschedulerbundletask

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/goksagun-scheduler-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/goksagun-scheduler-bundle/health.svg)](https://phpackages.com/packages/goksagun-scheduler-bundle)
```

###  Alternatives

[rcsofttech/audit-trail-bundle

Enterprise-grade, high-performance Symfony audit trail bundle. Automatically track Doctrine entity changes with split-phase architecture, multiple transports (HTTP, Queue, Doctrine), and sensitive data masking.

12017.1k](/packages/rcsofttech-audit-trail-bundle)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M229](/packages/sulu-sulu)[kimai/kimai

Kimai - Time Tracking

4.8k9.4k1](/packages/kimai-kimai)[contao/core-bundle

Contao Open Source CMS

1301.7M3.0k](/packages/contao-core-bundle)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k6.0M770](/packages/sylius-sylius)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.9M534](/packages/pimcore-pimcore)

PHPackages © 2026

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