= 1 AND log_timestamp >= DATE_SUB(CURDATE(), INTERVAL 6 DAY) GROUP BY log_date ORDER BY log_date ASC"; $result_valid = $connection->query($query_valid); $validTrafficData = []; while ($row = $result_valid->fetch_assoc()) { $validTrafficData[] = $row; } // 최근 7일 유효하지 않은 트래픽 데이터 가져오기 $query_invalid = " SELECT DATE(log_timestamp) AS log_date, COUNT(ip_address) AS traffic_count FROM traffic_log WHERE (country != 'KR' OR retension_duration < 1) AND log_timestamp >= DATE_SUB(CURDATE(), INTERVAL 6 DAY) GROUP BY log_date ORDER BY log_date ASC"; $result_invalid = $connection->query($query_invalid); $invalidTrafficData = []; while ($row = $result_invalid->fetch_assoc()) { $invalidTrafficData[] = $row; } // 전체 트래픽 데이터 가져오기 (for other charts) $query_total = "SELECT service_domain, page_uri, ip_address, country, region, retension_duration, referer, log_timestamp FROM traffic_log WHERE country = 'KR' AND service = 'gamemaker'"; // 서비스 고정 $result_total = $connection->query($query_total); $trafficData = []; while ($row = $result_total->fetch_assoc()) { $trafficData[] = $row; } // IP 주소 기반 위치 정보 가져오기 $locations = []; $ipCounts = []; // IP 주소별 트래픽 수량을 집계 foreach ($trafficData as $entry) { $ip = $entry['ip_address']; if (!isset($ipCounts[$ip])) { $ipCounts[$ip] = 0; } $ipCounts[$ip] += 1; } // IP별 위치 정보와 트래픽 수량 가져오기 foreach ($ipCounts as $ip => $count) { // 데이터베이스에서 직접 loc 값을 사용 $query = "SELECT loc, region FROM traffic_log WHERE ip_address = '$ip' LIMIT 1"; $result = $connection->query($query); $row = $result->fetch_assoc(); if ($row && !empty($row['loc'])) { list($lat, $lng) = explode(',', $row['loc']); // region에서 마지막 부분만 추출해서 도시 이름으로 사용 $regionParts = explode(' / ', $row['region']); $cityName = end($regionParts); // 배열의 마지막 요소, 예: 'Seosan' // 위치와 트래픽 수량 정보 배열에 추가 $locations[] = [ 'lat' => (float)$lat, 'lng' => (float)$lng, 'count' => $count, 'name' => $cityName ?? 'Unknown' // region이 없을 경우 'Unknown' 사용 ]; } } // JSON으로 인코딩하여 JavaScript에서 사용할 수 있도록 준비 $validTrafficDataJson = json_encode($validTrafficData); $invalidTrafficDataJson = json_encode($invalidTrafficData); $trafficDataJson = json_encode($trafficData); $locationsJson = json_encode($locations); // 지역별 트래픽 데이터를 JSON으로 인코딩 // 연결 종료 $connection->close(); // 출력 버퍼링 종료 ob_end_flush(); ?>