public function setUp() { parent::setUp(); $this->sm = Bootstrap::getServiceManager(); $this->em = $this->sm->get('doctrine.entitymanager.orm_default'); $cronData1 = new Cronjob(); $cronData1->setCode('TestCode1'); $cronData1->setStatus('pending'); $cronData1->setCreateTime(new \DateTime('2013-11-4')); $cronData1->setScheduleTime(new \DateTime('2013-11-4')); $cronData2 = new Cronjob(); $cronData2->setCode('TestCode2'); $cronData2->setStatus('pending'); $cronData2->setCreateTime(new \DateTime('2013-11-5')); $cronData2->setScheduleTime(new \DateTime('2013-11-5')); $this->cronData[] = $cronData1; $this->cronData[] = $cronData2; }
/** * try to acquire a lock on a cron job * * set a job to 'running' only if it is currently 'pending' * * @param Entity\Cronjob $job * @return bool */ public function tryLockJob(Entity\Cronjob $job) { $em = $this->getEm(); $repo = $em->getRepository('PlaygroundCore\\Entity\\Cronjob'); if ($job->getStatus() === Mapper\Cronjob::STATUS_PENDING) { $job->setStatus(Mapper\Cronjob::STATUS_RUNNING); $em->persist($job); $em->flush(); // flush() succeeded if reached here; // otherwise an Exception would have been thrown return true; } return false; }