dev-master
9999999-dev http://rizeway.comA Simple Job Bundle for Symfony 2
MIT
The Requires
- php >=5.3.3
Wallogit.com
2017 © Pedro Peláez
A Simple Job Bundle for Symfony 2
A simple job bundle for symfony 2 projects (with doctrine), (*1)
Add this bundle into your project composer.json file:, (*2)
"require": {
"rizeway/job-bundle": "dev-master"
},
Update your composer dependancies., (*3)
composer.phar update, (*4)
Register this bundle in your app/AppKernel.php, (*5)
<?php
public function registerBundles()
{
$bundles = array(
// ...some other bundles...
new Rizeway\JobBundle\RizewayJobBundle(),
);
Update your database schema, (*6)
php app/console doctrine:database:update --force, (*7)
Add the daemon to your cron tab, (*8)
php app/console rizeway:job:daemon, (*9)
Creating a Job, (*10)
A job is a class that implements Rizeway/JobBundle/JobHandler/JobHandlerInterface (you can also extends Rizeway/JobBundle/JobHandler/ContainerAwareJobHandler), (*11)
Example:, (*12)
<?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'));
....
}
Scheduling a job is done like this, (*13)
<?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();
....
}
The DoctrineLogger instance is available through a service. If you want to create your own Logger class and use it in the DaemonCommand, just create a new class which implements the JobLoggerInterface and declare it as a service., (*14)
Below is an example:, (*15)
parameters:
rizeway_job.logger.class: Acme\AcmeBundle\Logger\AcmeLogger
A Simple Job Bundle for Symfony 2
MIT