symfony-cron is a bundle of utilities for Symfony2 that provide functions related to scheduled tasks run out of a cron context.
symfony-cron is supported on PHP 5.4+ with Symfony 2.5+.
The best way to install symfony-cron is to include the bundle using a mechanism such as composer. Information about the package is published to packagist.
To use symfony-cron in a Symfony2-based project, start by defining how you want to use the system. The following checklist might help:
- What type of lock service will be used? (File, memcached, etc.)
- Do commands need to be executed in a child process?
- Processes that unexpectedly terminate cause locks to be unreleased if not executed in a child process, thus preventing future processes from running.
app/config/config.yml:
services:
symfony_cron.lock_file_service:
class: SymfonyCronBundle\Component\Lock\LockFileService
symfony_cron.default_lock_service: "@symfony_cron.lock_file_service"
symfony_cron.process_service:
class: SymfonyCronBundle\Component\Process\ProcessService
crontab:
* * * * * /path/to/script
/path/to/script:
#!/bin/bash
/usr/bin/php \
/path/to/symfony/app/console \
cron:single_exec \
--id /path/to/lock/files/some-unique-file \
--child_process \
-- \
/path/to/child/script \
--script-option \
script-args
app/config/config.yml:
services:
symfony_cron.lock_file_service:
class: SymfonyCronBundle\Component\Lock\LockFileService
symfony_cron.default_lock_service: "@symfony_cron.lock_file_service"
symfony_cron.process_service:
class: SymfonyCronBundle\Component\Process\ProcessService
crontab:
* * * * * /path/to/script instance-1-unique-key parameter-set-1
* * * * * /path/to/script instance-2-unique-key parameter-set-2
/path/to/script:
#!/bin/bash
KEY="$1"
PARAM="$2"
/usr/bin/php \
/path/to/symfony/app/console \
cron:single_exec \
--id ${KEY} \
-- \
some:command \
${PARAM}
symfony-cron is an open source, community-driven project. If you'd like to contribute, please read the Contributing documentation. If you're submitting a pull request, please follow the guidelines in the Submitting a Patch section and use Pull Request Template.
All tests are supported using standard phpunit practices. A helper script has also been provided to assist with running tests.