Easiest way to put crontab on your console scripts.
This extension is based on this. Thanks Yiivgeny.
But with a few changes:
- Work eith yii2
- Set config in params (not in phpDocs).
I transfer settings of crontab in local settings(params) configuration, so that the application can be run on different servers with different sets of crontab.
- Step 1: The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist denisogr/yii2-cronjobs "dev-master"
or add
"denisogr/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.
Yii::setAlias('@runnerScript', dirname(dirname(dirname(__FILE__))) .'/yii');
- Step 3: Add to console config:
'controllerMap' => [
'cron' => [
'class' => 'denisog\cronjobs\CronController'
],
],
- Step 4: Add task to system scheduler (cron on unix, task scheduler on windows) to run every minute:
* * * * * /path/to/yii/application/protected/yiic cron
Add in params array with cron sets:
'cronJobs' =>[
'test/example1' => [
'cron' => '* * * * *',
],
'test/example2' => [
'cron' => '10 * * * *',
],
],
You can point any settings from this.