ZF2 Module. A PHP cron task manager for ZF2 Application. Inspired by Cron/Cron
Installation of Cron Module uses composer.
php composer.phar require t4web/cron
or add to your composer.json
"require": {
"t4web/cron": "^1.0.0"
}
Then add T4web\Cron
to your config/application.config.php
Add to your configuration:
'cron' => [
'log-directory' => 'data', // default: getcwd()/data
'phpPath' => 'php', // default: php
'scriptPath' => '/path/to/application/public/folder/', // default: getcwd()/public/
'jobs' => [
[
'id' => 'cron-job1',
'command' => 'index.php application cron-job1',
'schedule' => '* * * * *'
],
[
'id' => 'cron-job2',
'command' => 'index.php application cron-job2',
'schedule' => '* * * * *'
]
],
'timeout' => 3600 // default: null (without timeout)
]
General options:
Option | Description |
---|---|
log-directory | (not required) path to the log files, no required, but if empty - directory data must be writable |
phpPath | (not required) path to the php executable, usually "php" |
scriptPath | (not required) path to your applications public folder, defaults to your root application public folder |
jobs | an array of jobs and their schedules |
timeout | (not required) timeout for the cron job (in seconds) |
Options for cron jobs:
Option | Description |
---|---|
id | (required) job identificator - for grouping job reports |
command | (required) the php script command to be run |
schedule | (required) A valid Cron schedule |
We recommend add this command to cron with run every minute (* * * * *)
php index.php cron run
Logs works with T4web\EventSubscriber module (this module provide one place for manage all application events). Install and enable T4web\EventSubscriber
in your application config. If module T4web\EventSubscriber
does not exists - logs will not be written.
After run in log-directory
will be created log file by pattern JOB-ID.log
(example: data/cron-job1.log) with content like this:
[2016-02-25 15:43:48] Job fail
Start: 2016-02-25 15:43:47
End: 2016-02-25 15:43:48
Execution time: 1 seconds
--Output:
1
2
3
--End output.
--Error:
PHP Fatal error: Call to undefined function Application\Controller\asd() in /storage/proj/1season/module/Application/src/Application/Controller/CronController.php on line 21
PHP Stack trace:
PHP 1. {main}() /storage/proj/1season/public/index.php:0
PHP 2. Zend\Mvc\Application->run() /storage/proj/1season/public/index.php:21
PHP 3. Zend\EventManager\EventManager->trigger() /storage/proj/1season/vendor/zendframework/zend-mvc/src/Application.php:314
PHP 4. Zend\EventManager\EventManager->triggerListeners() /storage/proj/1season/vendor/zendframework/zend-eventmanager/src/EventManager.php:214
PHP 5. call_user_func:{/storage/proj/1season/vendor/zendframework/zend-eventmanager/src/EventManager.php:490}() /storage/proj/1season/vendor/zendframework/zend-eventmanager/src/EventManager.php:490
PHP 6. Zend\Mvc\DispatchListener->onDispatch() /storage/proj/1season/vendor/zendframework/zend-eventmanager/src/EventManager.php:490
PHP 7. Zend\Mvc\Controller\AbstractController->dispatch() /storage/proj/1season/vendor/zendframework/zend-mvc/src/DispatchListener.php:93
PHP 8. Zend\EventManager\EventManager->trigger() /storage/proj/1season/vendor/zendframework/zend-mvc/src/Controller/AbstractController.php:118
PHP 9. Zend\EventManager\EventManager->triggerListeners() /storage/proj/1season/vendor/zendframework/zend-eventmanager/src/EventManager.php:214
PHP 10. call_user_func:{/storage/proj/1season/vendor/zendframework/zend-eventmanager/src/EventManager.php:490}() /storage/proj/1season/vendor/zendframework/zend-eventmanager/src/EventManager.php:490
PHP 11. Zend\Mvc\Controller\AbstractActionController->onDispatch() /storage/proj/1season/vendor/zendframework/zend-eventmanager/src/EventManager.php:490
PHP 12. Application\Controller\CronController->job1Action() /storage/proj/1season/vendor/zendframework/zend-mvc/src/Controller/AbstractActionController.php:82
--End error.