コード例 #1
0
ファイル: Job.php プロジェクト: icomefromthenet/laterjob
 /**
  *  Transition a job to error state
  *
  *  @access public
  *  @param string $handle The worker's handle
  *  @param DateTime $start
  *  @param string $msg
  *  @throws LaterJob\Exception when starting state fails
  */
 public function error($handle, DateTime $when, $msg = '')
 {
     $current = $this->storage->getState();
     if ($current !== QueueConfig::STATE_START) {
         throw new LaterJobException(sprintf('Can not transiton from %s to %s', $this->getCurrentState(), $this->config->getLiteral(QueueConfig::STATE_ERROR)));
     }
     # change the state on the storage
     $this->storage->setState(QueueConfig::STATE_ERROR);
     # set the timer for next retry
     $wait = clone $when;
     $t = $wait->getTimestamp();
     $v = $this->config->getRetryTimer();
     $wait->setTimestamp($t + $v);
     $this->storage->setRetryLast($wait);
     # remove one off recount
     $count = $this->storage->getRetryLeft();
     if ($count > 0) {
         $this->storage->setRetryLeft($count - 1);
     }
     # create the transition entity
     $trans = new Transition();
     $trans->setJob($this->getId());
     $trans->setState(QueueConfig::STATE_ERROR);
     $trans->setOccured($when);
     $trans->setMessage(' Job ' . $this->getId() . ' ERROR :: ' . $msg);
     $trans->setProcessHandle($handle);
     # raise the error event
     $this->event->dispatch(JobEventsMap::STATE_ERROR, new JobTransitionEvent($this, $trans));
 }
コード例 #2
0
 public function testEntityProperties()
 {
     $storage = new Storage();
     $dte_added = new DateTime();
     $job_data = new \stdClass();
     $job_id = '67b9a976-2edd-3e6e-adc3-22adeb5b3949';
     $lockout_handle = md5($job_id);
     $lockout_timer = new DateTime();
     $retry = 3;
     $state = 1;
     $retry_last = new DateTime();
     $storage->setDateAdded($dte_added);
     $storage->setJobData($job_data);
     $storage->setJobId($job_id);
     $storage->setLockoutHandle($lockout_handle);
     $storage->setLockoutTimer($lockout_timer);
     $storage->setRetryLeft($retry);
     $storage->setRetryLast($retry_last);
     $storage->setState($state);
     $this->assertEquals($dte_added, $storage->getDateAdded());
     $this->assertEquals($job_data, $storage->getJobData());
     $this->assertEquals($job_id, $storage->getJobId());
     $this->assertEquals($lockout_handle, $storage->getLockoutHandle());
     $this->assertEquals($lockout_timer, $storage->getLockoutTimer());
     $this->assertEquals($retry, $storage->getRetryLeft());
     $this->assertEquals($retry_last, $storage->getRetryLast());
     $this->assertEquals($state, $storage->getState());
 }
コード例 #3
0
 public function toArray(Storage $entity)
 {
     return array('jobId' => $entity->getJobId(), 'retryCount' => $entity->getRetryLeft(), 'dateAdded' => $entity->getDateAdded(), 'stateId' => $entity->getState(), 'jobData' => $entity->getJobData(), 'lockTimeout' => $entity->getLockoutTimer(), 'handle' => $entity->getLockoutHandle(), 'retryLast' => $entity->getRetryLast());
 }