dev-master
9999999-dev https://github.com/peopleperhour/yii2-cronjobscronjobs scheduler for yii2
BSD-3-Clause
The Requires
extension yii2 scheduler cron cronjobs
cronjobs scheduler for yii2
Easiest way to put crontab on your console scripts., (*1)
This extension is based on this repo for yii1 and this for yii2., (*2)
The peopleperhour package adds some more features such as 1) extra logging 2) correct cron-tags functionality, (*3)
Either run, (*4)
php composer.phar require --prefer-dist peopleperhour/yii2-cronjobs "dev-master"
or add, (*5)
"peopleperhour/yii2-cronjobs": "dev-master"
to the require section of your composer.json
file.
- Step 2: Set aliase @runnerScript in console config. This absolutely path to runner script (I can not find another way to get runner script).
Change path to runner script as your project., (*6)
Yii::setAlias('@runnerScript', dirname(dirname(dirname(__FILE__))) .'/yii');
'controllerMap' => [ 'cron' => [ 'class' => 'peopleperhour\cronjobs\CronController' ], ],
* * * * * /path/to/yii/application/protected/yii cron
Add in params array with cron sets:, (*7)
'params' => [ 'test/example1' => [ 'cron' => '* * * * *', ], 'test/example2' => [ 'cron' => '10 * * * *', ], ],
There are two levels of logging provided., (*8)
a) Log the output of the cron mechanism, (*9)
Logs events coming into the cron mechanism., (*10)
Sample Output:, (*11)
2015-06-11 09:48:36 [-][-][-][info][cronjobs] Running task [1]: runtestcron test in /var/www/vendor/peopleperhour/yii2-cronjobs/CronController.php:260 2015-06-11 09:48:36 [-][-][-][info][cronjobs] Runned 1 task(s) at Thu, 11 Jun 2015 09:48:36 +0000 in /var/www/vendor/peopleperhour/yii2-cronjobs/CronController.php:264, (*12)
Set up:, (*13)
In your config, set the below in your log component:, (*14)
'components' => [ 'log' => [ 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'logFile' => 'somelogfile.log', 'categories' => ['yii2-cronjobs'] ], ], ], ]
The "categories" element is the default category used in the peopleperhour/yii2-cronjobs extension. If you want to change it then enter the name desired above and also set the logsCategory field in the controllerMap., (*15)
eg., (*16)
'controllerMap' => [ 'cron' => [ 'class' => 'peopleperhour\cronjobs\CronController', 'logsCategory' => 'somenewcategory', ], ],
b) Log the output of commands running, (*17)
There are two ways to log the output of the commands running., (*18)
First is the catchall way, where you add the filename to your controllerMap., (*19)
eg, (*20)
'controllerMap' => [ 'cron' => [ 'class' => 'peopleperhour\cronjobs\CronController', 'logFileName' => 'somelog', ], ],
Secondly you can specify the output of each cron command specifically by changing the cron specification using the "cron-stdout" directive., (*21)
'params' => [ 'test/example1' => [ 'cron' => '* * * * *', 'cron-stdout' => 'example1-out', 'cron-stderr' => 'example1-err' ], 'test/example2' => [ 'cron' => '10 * * * *', ], ],
The above will overwrite the catchall output of the controllerMap and send the output to the cron-stdout specified log file., (*22)
Should you need to separate environments when running your crons you can add a cron-tags parameter to the cron config, (*23)
'params' => [ 'test/example1' => [ 'cron' => '* * * * *', 'cron-stdout' => 'example1-out', 'cron-stderr' => 'example1-err' 'cron-tags' => 'live staging' ], ],
Then run your cron command with the tag requested inside your scheduler, (*24)
eg, (*25)
* * * * * /path/to/yii/application/protected/yii cron live
cronjobs scheduler for yii2
BSD-3-Clause
extension yii2 scheduler cron cronjobs