public function onQueryActivity(QueueQueryActivityEvent $event) { try { $query = $this->gateway->selectQuery()->start(); if ($event->getAfter() instanceof DateTime) { $query->filterOccuredAfter($event->getAfter()); } if ($event->getBefore() instanceof DateTime) { $query->filterOccuredBefore($event->getBefore()); } if ($event->getLimit() !== null) { $query->limit($event->getLimit()); } if ($event->getOffset() !== null) { $query->offset($event->getOffset()); } if ($event->getWorkerID() !== null) { $query->filterByWorker($event->getWorkerID()); } if ($event->getJobID() !== null) { $query->filterByJob($event->getJobID()); } # set the order by the date added $query->orderByOccured($event->getOrder()); $event->setResult($query->end()->find()); } catch (DBALGatewayException $e) { throw new LaterJobException($e->getMessage(), 0, $e); } }
/** * Handles the event MonitoringEventsMap::MONITOR_COMMIT * * @access public * @return void * @param MonitoringEvent $event */ public function onMonitorRun(MonitoringEvent $event) { try { $result = $event->getStats(); # Get Queue Job Counts $counts = $this->activity_gateway->countQueueJobStates($result->getMonitorDate(), $event->getInterval()); foreach ($counts as $state_count) { switch ($state_count['state_id']) { case QueueConfig::STATE_ADD: $result->setQueueJobsAdded($state_count['state_count']); break; case QueueConfig::STATE_START: $result->setQueueJobsProcessing($state_count['state_count']); break; case QueueConfig::STATE_FINISH: $result->setQueueJobsCompleted($state_count['state_count']); break; case QueueConfig::STATE_ERROR: $result->setQueueJobsError($state_count['state_count']); break; case QueueConfig::STATE_FAIL: $result->setQueueJobsFailed($state_count['state_count']); break; default: throw new LaterJobException('Unknown job state can not continue'); } } # get the queue Mean Max and Min Service Times $result->setJobMeanServiceTime($this->activity_gateway->getMeanServiceTime($result->getMonitorDate(), $event->getInterval())); $result->setJobMaxServiceTime($this->activity_gateway->getMaxServiceTime($result->getMonitorDate(), $event->getInterval())); $result->setJobMinServiceTime($this->activity_gateway->getMinServiceTime($result->getMonitorDate(), $event->getInterval())); # calculate worker stats $result->setWorkerMaxTime($this->activity_gateway->getWorkerMaxRunningTime($result->getMonitorDate(), $event->getInterval())); $result->setWorkerMinTime($this->activity_gateway->getWorkerMinRunningTime($result->getMonitorDate(), $event->getInterval())); $result->setWorkerMeanTime($this->activity_gateway->getWorkerMeanRunningTime($result->getMonitorDate(), $event->getInterval())); $result->setWorkerMeanThroughput($this->activity_gateway->getWorkerMeanThroughput($result->getMonitorDate(), $event->getInterval())); # calculate Utilization $result->setWorkerMeanUtilization($result->getWorkerMeanThroughput() / $result->getWorkerMaxThroughput()); # completed successfuly $event->setResult(true); } catch (DBALGatewayException $e) { throw new LaterJobException($e->getMessage(), 0, $e); } return $event; }
/** * Save the transition to the database * * @access public * @return boolean * @param WorkerTransitionEvent $event */ protected function saveTransition(WorkerTransitionEvent $event) { try { $obj = $event->getTransition(); $result = $this->gateway->insertQuery()->start()->addColumn('worker_id', $obj->getWorker())->addColumn('state_id', $obj->getState())->addColumn('dte_occured', $obj->getOccured())->addColumn('transition_msg', $obj->getMessage())->addColumn('process_handle', $obj->getProcessHandle())->end()->insert(); # assign the id to the object $obj->setTransitionId($this->gateway->lastInsertId()); if ($result === false) { throw new LaterJobException('Unable to save transition for Worker:: ' . $obj->getWorker() . ' It already exists'); } } catch (DBALGatewayException $e) { throw new LaterJobException($e->getMessage(), 0, $e); } }