service === null) { $this->service = service('collectorservice'); $fields = ['trafficinfo_uid', 'in', 'out', 'raw_in', 'raw_out']; $filters = ['trafficinfo_uid']; $this->service->getFormService()->setFormFields($fields); $this->service->getFormService()->setFormRules('create', $fields); $this->service->getFormService()->setFormFilters($filters); $this->service->getFormService()->setFormOptions($filters); $this->service->getFormService()->setBatchjobFilters($filters); } $this->addActionPaths($this::PATH); } protected function createDTO(array $formDatas): CollectorDTO { return new CollectorDTO($formDatas); } public function execute(): void { $message = ""; try { $trafficService = service('trafficservice'); foreach ($trafficService->getEntities(['status' => STATUS['AVAILABLE']]) as $trafficEntity) { $data = $this->service->getCalculatedData($trafficEntity); // Collector DB에 결과 저장 $entity = $this->service->create($this->createDTO($data)); $message = "트래픽 계산 및 저장 완료 (UID: {$trafficEntity->getPK()}), In: {$entity->getIn()} Kb/s / Out: {$entity->getOut()} Kb/s"; } } catch (ValidationException $e) { $message = "트래픽 계산 및 저장 검증오류:{$e->getMessage()}"; } catch (\Exception $e) { $message = "트래픽 계산 및 저장 실패오류:{$e->getMessage()}"; } echo $message . "\n"; log_message('info', $message); } }