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

37 lines
1.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 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
{
$trafficService = service('trafficservice');
foreach ($trafficService->getEntities(['status' => STATUS['AVAILABLE']]) as $entity) {
$data = $this->service->getCalculatedData($entity);
// Collector DB에 결과 저장
$this->service->create($this->createDTO($data));
log_message('info', "트래픽 계산 및 저장 완료 (UID: {$entity->getPK()}), In: {$data['in_kbits_sec']} Kb/s");
}
}
}