rizeway / job-bundle
Symfony 2 的简单任务包
dev-master
2012-10-24 14:42 UTC
Requires
- php: >=5.3.3
This package is not auto-updated.
Last update: 2024-09-14 14:14:17 UTC
README
一个简单的用于 symfony 2 项目(包含 doctrine)的任务包
安装
-
将此包添加到您的项目 composer.json 文件中
"require": { "rizeway/job-bundle": "dev-master" },
-
更新您的 composer 依赖关系。
composer.phar update
-
在您的 app/AppKernel.php 中注册此包
<?php public function registerBundles() { $bundles = array( // ...some other bundles... new Rizeway\JobBundle\RizewayJobBundle(), );
-
更新您的数据库模式
php app/console doctrine:database:update --force
用法
-
将守护进程添加到您的 cron 调度表中
php app/console rizeway:job:daemon
-
创建一个任务
任务是一个实现了 Rizeway/JobBundle/JobHandler/JobHandlerInterface(您也可以扩展 Rizeway/JobBundle/JobHandler/ContainerAwareJobHandler)的类
示例
<?php namespace MyBundle\JobHandler; use Rizeway\JobBundle\JobHandler\ContainerAwareJobHandler; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class MyJobHandler extends ContainerAwareJobHandler { protected function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setRequired(array( 'my_required_option', )); } public function run() { $this->log('My Option Is : '.$this->getOption('my_required_option')); .... }
- 调度一个任务
调度任务的方式如下
<?php namespace MyBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Rizeway\JobBundle\Entity\Job; class myController extends Controller { public function myAction() { $job = new Job(); $job->setName('Job Name'); $job->setType('Job Type'); $job->setClassname('\MyBundle\JobHandler\MyJobHandler'); $job->setOptions(array( 'my_required_option' => 'option_value' )); $this->getDoctrine()->getEntityManager()->persist($job); $this->getDoctrine()->getEntityManager()->flush(); .... }
高级用法
- 日志记录器
DoctrineLogger 实例可以通过一个服务获得。如果您想在守护进程命令中使用自己的 Logger 类,只需创建一个新的类,实现 JobLoggerInterface 并将其声明为一个服务。
以下是一个示例
parameters: rizeway_job.logger.class: Acme\AcmeBundle\Logger\AcmeLogger