PHPackages                             rubarbs/yii2-scheduling - 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. rubarbs/yii2-scheduling

ActiveYii2-extension

rubarbs/yii2-scheduling
=======================

Scheduling extension for Yii2 framework

1.1.5(3y ago)0481↓100%PHPPHP &gt;=5.4.0

Since Mar 20Pushed 3y agoCompare

[ Source](https://github.com/zrayev/yii2-scheduling)[ Packagist](https://packagist.org/packages/rubarbs/yii2-scheduling)[ RSS](/packages/rubarbs-yii2-scheduling/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (4)Versions (17)Used By (0)

Schedule extension for Yii2
===========================

[](#schedule-extension-for-yii2)

This extension is the port of Laravel's Schedule component ()

Installation
------------

[](#installation)

The preferred way to install this extension is through [composer](http://getcomposer.org/download/).

Either run

```
php composer.phar require rubarbs/yii2-scheduling "*"

```

or add

```
"rubarbs/yii2-scheduling": "*"
```

to the `require` section of your composer.json.

Description
-----------

[](#description)

This project is inspired by the Laravel's Schedule component and tries to bring it's simplicity to the Yii framework. Quote from Laravel's documentation:

```
In the past, developers have generated a Cron entry for each console command they wished to schedule.
However, this is a headache. Your console schedule is no longer in source control,
and you must SSH into your server to add the Cron entries. Let's make our lives easier.

```

After installation all you have to do is to put single line into crontab:

```
* * * * * php /path/to/yii yii schedule/run --scheduleFile=@path/to/schedule.php 1>> /dev/null 2>&1

```

You can put your schedule into the `schedule.php` file, or add it withing bootstrapping of your extension or application

Schedule examples
-----------------

[](#schedule-examples)

This extension is support all features of Laravel's Schedule, except environments and maintance mode.

**Scheduling Closures**

```
$schedule->call(function()
{
    // Do some task...

})->hourly();
```

**Scheduling Terminal Commands**

```
$schedule->exec('composer self-update')->daily();
```

**Running command of your application**

```
$schedule->command('migrate')->cron('* * * * *');
```

**Frequent Jobs**

```
$schedule->command('foo')->everyFiveMinutes();

$schedule->command('foo')->everyTenMinutes();

$schedule->command('foo')->everyThirtyMinutes();
```

**Daily Jobs**

```
$schedule->command('foo')->daily();
```

**Daily Jobs At A Specific Time (24 Hour Time)**

```
$schedule->command('foo')->dailyAt('15:00');
```

**Twice Daily Jobs**

```
$schedule->command('foo')->twiceDaily();
```

**Job That Runs Every Weekday**

```
$schedule->command('foo')->weekdays();
```

**Weekly Jobs**

```
$schedule->command('foo')->weekly();

// Schedule weekly job for specific day (0-6) and time...
$schedule->command('foo')->weeklyOn(1, '8:00');
```

**Monthly Jobs**

```
$schedule->command('foo')->monthly();
```

**Job That Runs On Specific Days**

```
$schedule->command('foo')->mondays();
$schedule->command('foo')->tuesdays();
$schedule->command('foo')->wednesdays();
$schedule->command('foo')->thursdays();
$schedule->command('foo')->fridays();
$schedule->command('foo')->saturdays();
$schedule->command('foo')->sundays();
```

**Only Allow Job To Run When Callback Is True**

```
$schedule->command('foo')->monthly()->when(function()
{
    return true;
});
```

**E-mail The Output Of A Scheduled Job**

```
$schedule->command('foo')->sendOutputTo($filePath)->emailOutputTo('foo@example.com');
```

**Preventing Task Overlaps**

```
$schedule->command('foo')->withoutOverlapping();
```

Used by default yii\\mutex\\FileMutex or 'mutex' application component ()

**Running Tasks On One Server**

> To utilize this feature, you must config mutex in the application component, except the FileMutex: `yii\mutex\MysqlMutex`,`yii\mutex\PgsqlMutex`,`yii\mutex\OracleMutex` or `yii\redis\Mutex`. In addition, all servers must be communicating with the same central db/cache server.

Below shows the redis mutex demo:

```
'components' => [
    'mutex' => [
        'class' => 'yii\redis\Mutex',
        'redis' => [
            'hostname' => 'localhost',
            'port' => 6379,
            'database' => 0,
        ]
    ],
],
```

```
$schedule->command('report:generate')
                ->fridays()
                ->at('17:00')
                ->onOneServer();
```

How to use this extension in your application?
----------------------------------------------

[](#how-to-use-this-extension-in-your-application)

You should create the following file under `@console/config/schedule.php` (note: you can create file with any name and extension and anywere on your server, simpli ajust the name of the scheduleFile in the command below):

```
