trafficmonitor/app/Controllers/CLI/Collector.php
2025-11-12 15:18:36 +09:00

41 lines
1.5 KiB
PHP

<?php
namespace App\Controllers\CLI;
use App\Controllers\CommonController;
use App\DTOs\CollectorDTO;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
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');
}
$this->addActionPaths($this::PATH);
}
protected function createDTO(array $formDatas): CollectorDTO
{
return new CollectorDTO($formDatas);
}
public function execute(): void
{
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));
log_message('info', "트래픽 계산 및 저장 완료 (UID: {$trafficEntity->getPK()}), In: {$entity->getIn()} Kb/s / Out: {$entity->getOut()} Kb/s");
}
} catch (\Exception $e) {
log_message('info', "트래픽 계산 및 저장 실패:{$e->getMessage()}");
}
}
}