course-hero / symfony-cron-bundle
Symfony2 的 Cron 相关实用工具
v0.2.0
2014-11-04 13:32 UTC
Requires
- php: >= 5.3.3
- symfony/symfony: ~2.5
Requires (Dev)
- mikey179/vfsstream: ~1.4
- phpunit/phpunit: ~4.3
This package is not auto-updated.
Last update: 2024-09-24 03:25:09 UTC
README
什么是 symfony-cron?
symfony-cron 是一个为 Symfony2 提供与 cron 环境中运行的计划任务相关功能的工具包。
要求
symfony-cron 支持 PHP 5.4+ 和 Symfony 2.5+。
安装
安装 symfony-cron 的最佳方式是使用如 composer 之类的机制包含该包。有关包的信息已发布到 packagist。
使用
要在基于 Symfony2 的项目中使用 symfony-cron,首先定义您希望如何使用系统。以下清单可能会有所帮助
- 将使用哪种类型的锁服务?(文件、memcached 等)
- 命令需要在子进程中执行吗?
- 如果不在子进程中执行,意外终止的进程将导致锁未被释放,从而防止未来的进程运行。
示例:使用子进程的文件锁
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 是一个开源、社区驱动的项目。如果您想贡献,请阅读 贡献 文档。如果您正在提交拉取请求,请遵循 提交补丁 部分的指南,并使用 Pull Request 模板。