54 lines
2.3 KiB
PHP
54 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers\CLI;
|
|
|
|
use App\Controllers\CommonController;
|
|
use App\DTOs\CollectorDTO;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use CodeIgniter\Validation\Exceptions\ValidationException;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
class Collector extends CommonController
|
|
{
|
|
public const PATH = 'collector';
|
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
|
{
|
|
parent::initController($request, $response, $logger);
|
|
if ($this->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);
|
|
}
|
|
}
|