56 lines
2.4 KiB
PHP
56 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers\CLI;
|
|
|
|
use App\Controllers\BaseController;
|
|
use App\DTOs\CollectorDTO;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use CodeIgniter\Validation\Exceptions\ValidationException;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
class Collector extends BaseController
|
|
{
|
|
private $service = null;
|
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
|
{
|
|
parent::initController($request, $response, $logger);
|
|
if ($this->service === null) {
|
|
$action = 'create';
|
|
$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($action, $fields);
|
|
$this->service->getFormService()->setFormFilters($filters);
|
|
$this->service->getFormService()->setFormOptions($action, $filters);
|
|
$this->service->getFormService()->setBatchjobFilters($filters);
|
|
}
|
|
}
|
|
public function execute(): void
|
|
{
|
|
try {
|
|
log_message('info', "트래픽 수집 시작");
|
|
$trafficService = service('trafficservice');
|
|
$total = 1;
|
|
$success = 0;
|
|
$error = 0;
|
|
foreach ($trafficService->getEntities(['status' => STATUS['AVAILABLE']]) as $trafficEntity) {
|
|
try {
|
|
$entity = $this->service->create(new CollectorDTO($this->service->getCalculatedData($trafficEntity)));
|
|
$success++;
|
|
$message = "{$trafficEntity->getServerIP()} 트래픽 수집데이터 저장 완료 In: {$entity->getIn()} Kb/s / Out: {$entity->getOut()} Kb/s";
|
|
log_message('info', $message);
|
|
} catch (\Throwable $e) {
|
|
$error++;
|
|
log_message('error', "{$trafficEntity->getServerIP()} 트래픽 수집데이터 저장 실패:{$e->getMessage()}");
|
|
}
|
|
$total++;
|
|
}
|
|
log_message('info', sprintf("성공:%s , 실패:%s , 총:%s 트래픽 수집 작업완료", $success, $error, $total));
|
|
} catch (\Throwable $e) {
|
|
log_message('error', "트래픽 수집 작업오류:{$e->getMessage()}");
|
|
}
|
|
}
|
|
}
|