회원가입 | 고객센터 |
DESIGNONEX
디자인원엑스
About
Service
Q&A
PR리그
자유게시판N
갤러리
포인트게임
공지사항N
통계
로그인 회원가입
고객센터
5. 관리자 기능 사용법

다운로드 통계

A Administrator
2026.04.21 01:29(수정됨) 109 0

1. 다운로드 분석 통계 개요

DXCMS 관리자 패널의 [다운로드 분석 통계] 메뉴는 게시판에 첨부된 파일의 다운로드 현황을 다각도로 분석하는 전문 통계 도구입니다. 인기 파일 순위•게시판별 현황•회원별 이용량•최근 다운로드 이력의 4개 탭으로 구성되며, 포인트 기반 유료 다운로드 소모 현황도 함께 추적합니다.

📌  접근 경로: 관리자 대시보드 → 다운로드 분석 통계 (URL: /admin/downloads) 관리자(Admin) 권한이 있는 계정만 접근 가능합니다.


1.1 참조 DB 테이블

테이블명 역할 주요 컬럼
download_log 다운로드 이력 기록 id / file_id / post_id / member_id / ip / point_used / created_at
post_files 파일 메타 정보 id / post_id / orig_name / file_ext / file_size / download_count
posts 게시글 정보 id / board_id / member_id / title / status
boards 게시판 정보 id / board_name / board_key / status
members 회원 정보 id / name / login_id / point

⚠️  download_log 테이블이 없으면 모든 다운로드 이력 관련 기능(인기 파일 순위•회원별 이용량•최근 로그)이 비활성화되고 안내 배너가 표시됩니다. post_files 테이블은 항상 존재하므로 게시판별 통계는 download_log 없이도 파일 수•총 용량은 조회 가능합니다.


1.2 화면 전체 구성

영역 설명
페이지 헤더 "다운로드 분석 통계" 제목. 부제: "콘텐츠 파일의 다운로드 횟수 및 포인트 소모 현황을 분석합니다."
download_log 없음 배너 hasDlLog=false일 때 황색 경고 배너 표시. "기록 테이블이 존재하지 않습니다."
KPI 요약 카드 4종 누적 다운로드 / 오늘 다운로드 / 전체 첨부파일 / 소모 포인트 합계. 탭 변경에 관계없이 항상 표시.
탭 내비게이션 4개 탭 버튼(인기 파일 순위·게시판별 통계·회원별 이용량·최근 다운로드 로그). 선택된 탭은 흰색 배경·하늘색 텍스트.
탭 본문 영역 선택된 탭에 따라 각 분석 테이블이 표시됩니다.


2. KPI 요약 카드 4종

화면 상단에 항상 표시되는 4개의 핵심 지표 카드입니다. 탭을 변경해도 KPI 카드는 유지됩니다. 모든 수치는 기간 제한 없는 전체 누적 기준입니다.
 
카드 아이콘 색상 집계 방법 및 설명
누적 다운로드 하늘색 SELECT COUNT(*) FROM download_log. download_log 전체 레코드 수. 전체 기간 누적 다운로드 총 횟수.
오늘 다운로드 초록색 SELECT COUNT(*) FROM download_log WHERE DATE(created_at)=CURDATE(). 오늘(서버 날짜 기준) 다운로드 횟수.
전체 첨부파일 보라색 SELECT COUNT(*) FROM post_files WHERE post_id>0. 게시글에 첨부된 전체 파일 수. download_log 없이도 표시됩니다.
소모 포인트 합계 주황색 SELECT COALESCE(SUM(point_used),0) FROM download_log. 전체 기간 회원들이 다운로드에 소모한 포인트 총합.

💡  [소모 포인트 합계] KPI는 포인트 기반 유료 다운로드 기능을 사용하는 사이트에서 특히 중요합니다. 이 값이 높을수록 파일 콘텐츠에 대한 수요가 높고 포인트 생태계가 활발하다는 의미입니다. point_used=0인 무료 다운로드는 0으로 기록되어 합산에 포함되지 않습니다.


3. 인기 파일 순위 탭 (rank) — 기본 탭

download_log가 있을 때 post_files.download_count 기준으로 정렬한 인기 파일 TOP 100을 표시합니다. URL 파라미터 tab=rank 또는 tab이 없으면 이 탭이 기본으로 표시됩니다.


3.1 집계 쿼리

4개 테이블을 JOIN하여 파일•게시글•게시판•업로더 정보를 한 번에 조회합니다.
 
기준 테이블 post_files (f) — 파일 정보의 기준 테이블.
JOIN 조건 1 LEFT JOIN posts (p) ON f.post_id = p.id — 파일이 첨부된 게시글 정보.
JOIN 조건 2 LEFT JOIN boards (b) ON p.board_id = b.id — 게시글이 속한 게시판 정보.
JOIN 조건 3 LEFT JOIN members (m) ON p.member_id = m.id — 게시글 작성자(업로더) 정보.
필터 조건 WHERE f.post_id > 0 AND p.status = 1. 게시글에 연결된 파일이고 활성 게시글에만 한정.
정렬 ORDER BY f.download_count DESC. 다운로드 횟수 내림차순.
최대 결과 LIMIT 100. 상위 100개만 표시.

💡  download_count는 download_log 레코드가 생성될 때마다 post_files.download_count가 1씩 증가하여 집계됩니다. 실시간 카운터입니다.


3.2 테이블 컬럼 상세

컬럼 내용 및 설명
순위 1위=🥇, 2위=🥈, 3위=🥉 메달 이모지. 4위 이후는 "#N" 숫자(회색 이탤릭체). 메달 행은 주황색(text-amber-500)으로 강조.
파일명 / 확장자 post_files.orig_name(원본 파일명, 굵은 글씨). 아래 줄에 file_ext를 대문자로 표시 (예: PDF 파일, ZIP 파일). 마우스 호버 시 하늘색으로 변경.
게시판 boards.board_name. 회색 pill 배지 형태로 표시. 클릭 시 해당 게시판 목록(/{board_key}/list)이 새 탭에서 열림.
첨부 게시글 posts.title. 클릭 시 해당 게시글 상세 보기(/{board_key}/view/{post_id})가 새 탭에서 열림. 최대 200px 너비에서 truncate.
업로더 members.name. 게시글 작성자(파일 업로더)의 이름. 비회원이면 빈 값.
크기 post_files.file_size를 dl_filesize()로 변환. 1MB 이상→MB, 1KB 이상→KB, 미만→B. 우측 정렬 모노스페이스.
다운로드 수 post_files.download_count. 하늘색 배지(sky-50 배경, sky-100 테두리)로 강조. 천 단위 쉼표 모노스페이스.


3.3 인기 파일 순위 활용

  • 다운로드 수 1위 파일 → 가장 수요가 높은 콘텐츠. 비슷한 파일•연관 자료 추가로 트래픽 증대.
  • 특정 확장자(PDF, ZIP 등)가 상위권 독점 → 해당 유형 콘텐츠에 대한 수요 파악.
  • 인기 파일이 속한 게시판 확인 → 해당 게시판 홍보 강화 또는 유사 게시판 개설 검토.
  • 다운로드 수는 높으나 포인트 소모 0인 파일 → 무료 파일. 유료 전환 시 포인트 경제 활성화.
  • 오래된 게시글의 파일이 상위권이면 → 에버그린 콘텐츠. SEO 최적화 우선 순위 대상.


4. 게시판별 통계 탭 (boards)

활성(status=1) 게시판별로 첨부 파일 수, 총 다운로드 횟수, 총 파일 용량을 집계합니다. download_log 테이블이 없어도 post_files 기반 통계는 표시됩니다.


4.1 집계 쿼리

기준 테이블 boards (b) — 활성 게시판 전체.
JOIN 조건 1 LEFT JOIN posts (p) ON p.board_id=b.id AND p.status=1 — 활성 게시글만 대상.
JOIN 조건 2 LEFT JOIN post_files (f) ON f.post_id=p.id — 해당 게시글의 첨부 파일.
필터 조건 WHERE b.status=1. 활성(판매 중) 게시판만 대상.
집계 항목 COUNT(DISTINCT f.id) AS file_count / COALESCE(SUM(f.download_count),0) AS total_downloads / COALESCE(SUM(f.file_size),0) AS total_size
정렬 ORDER BY total_downloads DESC. 다운로드 합계 내림차순.
제한 LIMIT 없음. 활성 게시판 전체.


4.2 테이블 컬럼 상세

컬럼 내용 및 설명
게시판 board_name 링크(새 탭으로 게시판 목록 이동) + 우측에 "/board_key" 경로가 회색 작은 폰트로 표시.
파일 수 COUNT(DISTINCT f.id). 해당 게시판 활성 게시글에 첨부된 파일 총 수. 천 단위 쉼표 모노스페이스.
총 다운로드 SUM(f.download_count). 해당 게시판 전체 파일의 다운로드 횟수 합계. 초록색 배지(emerald-50 배경, emerald-100 테두리).
총 용량 SUM(f.file_size)를 dl_filesize()로 변환. 해당 게시판 전체 첨부 파일 용량 합계. 우측 정렬 모노스페이스.


4.3 게시판별 통계 활용

  • 총 다운로드가 많은 게시판 → 파일 수요가 높은 게시판. 업로드 정책 강화 또는 전용 파일 게시판 개설 검토.
  • 파일 수 대비 다운로드가 적은 게시판 → 파일이 많지만 관심이 낮음. 파일 품질•홍보 개선 필요.
  • 총 용량이 큰 게시판 → 스토리지 관리 우선순위 대상. 오래된 파일 정리 또는 스토리지 확장 검토.
  • 다운로드 0인 게시판 → 파일 첨부 기능 미활용. 해당 게시판에 파일 첨부 유도.


5. 회원별 이용량 탭 (members)

다운로드를 실행한 회원별로 총 다운로드 횟수와 소모한 포인트를 집계하여 다운로드 활동이 많은 TOP 100 회원을 표시합니다. download_log 테이블이 있어야 표시됩니다.


5.1 집계 쿼리

기준 테이블 members (m) — 회원 정보.
JOIN 조건 INNER JOIN download_log (dl) ON m.id=dl.member_id — 다운로드 이력이 있는 회원만 포함. (비회원 다운로드는 member_id=0이므로 제외.)
집계 항목 COUNT(dl.id) AS dl_count / COALESCE(SUM(dl.point_used),0) AS total_point_used
보조 정보 m.point — 현재 보유 포인트 잔액.
정렬 ORDER BY dl_count DESC. 다운로드 횟수 내림차순.
최대 결과 LIMIT 100. 상위 100명.


5.2 테이블 컬럼 상세

컬럼 내용 및 설명
회원 정보 이름(members.name, 굵은 글씨) + 아래에 로그인 ID(members.login_id, 모노스페이스 회색 코드 텍스트).
총 다운로드 수 dl_count. 해당 회원의 전체 다운로드 횟수. 하늘색(sky-600) 굵은 모노스페이스.
포인트 소모 total_point_used. "-NP" 형식으로 빨간색(rose-500) 굵은 모노스페이스 표시. 유료 다운로드로 소모한 포인트 총합. 0이면 "-0P"로 표시.
현재 잔액 members.point. 현재 보유 포인트. 초록색(emerald-600) 굵은 모노스페이스로 "NP" 형식 표시.


5.3 회원별 이용량 활용

  • 다운로드 1위 회원 → 가장 활발한 파일 소비자. 포인트 지급 이벤트•VIP 혜택 대상 검토.
  • 포인트 소모가 많은 회원 → 유료 파일에 적극적으로 참여. 포인트 경제 활성화에 기여.
  • 현재 잔액이 0이면서 소모가 많은 회원 → 포인트가 바닥남. 포인트 충전 유도 또는 보상 지급.
  • 동일 회원의 dl_count가 비정상적으로 높으면 → 자동화 다운로드 봇 의심. IP 확인 및 제한 조치 검토.


6. 최근 다운로드 로그 탭 (recent)

가장 최근 200건의 다운로드 이벤트를 역순으로 표시합니다. 개별 다운로드의 파일 정보•게시판•다운로더•포인트 소모•IP까지 상세하게 확인할 수 있습니다.


6.1 집계 쿼리

기준 테이블 download_log (dl) — 다운로드 이벤트 로그.
JOIN 1 LEFT JOIN post_files (f) ON dl.file_id=f.id — 파일명·확장자.
JOIN 2 LEFT JOIN posts (p) ON dl.post_id=p.id — 게시글 제목.
JOIN 3 LEFT JOIN boards (b) ON p.board_id=b.id — 게시판명·키.
JOIN 4 LEFT JOIN members (m) ON dl.member_id=m.id — 회원 이름·로그인 ID.
정렬 ORDER BY dl.id DESC. 가장 최근 다운로드부터.
최대 결과 LIMIT 200. 최근 200건.


6.2 테이블 컬럼 상세

컬럼 내용 및 설명
일시 download_log.created_at의 앞 16자(YYYY-MM-DD HH:MM). 마우스 호버 시 slate-600으로 강조.
파일 정보 post_files.orig_name(원본 파일명, 굵은 글씨) + 아래에 file_ext 대문자(회색 아주 작은 글씨, 예: PDF 형식).
게시판 boards.board_name 링크(새 탭으로 게시판 목록 이동). 정보 없으면 "-" 표시.
다운로더 로그인 회원: members.name(굵은 슬레이트) + 아래에 login_id(모노스페이스 회색). 비회원: "비회원" 회색 소문자 표시.
포인트 download_log.point_used > 0이면 빨간색 "-NP" 표시. 0이면 회색 "무료" 표시. 유료/무료 다운로드 구분.
IP 주소 download_log.ip. 다운로드 요청 IP 주소. 회색 모노스페이스.

6.3 포인트 표시 규칙
point_used 표시 형식 의미
0 무료 포인트 소모 없는 무료 다운로드.
1 이상 -NP (빨간색) 포인트 N개를 소모한 유료 다운로드.

💡  [최근 다운로드 로그]는 실시간 모니터링에 특히 유용합니다. 방금 업로드한 파일이 실제로 다운로드되고 있는지, 포인트 차감이 정상적으로 이루어지고 있는지를 바로 확인할 수 있습니다.

6.4 최근 로그 활용

  • 새 파일 업로드 직후 → [최근 다운로드 로그]에서 실제 다운로드 발생 여부 확인.
  • 특정 IP에서 반복 다운로드 → 자동화 봇 또는 대량 수집 의심. IP 차단 검토.
  • "무료" 표시 파일이 예상보다 많으면 → 포인트 다운로드 설정 누락 확인.
  • 비회원 다운로드가 많으면 → 회원 가입 유도 페이지 개선 또는 회원 전용 다운로드 정책 검토.


7. 파일 크기 표시 — dl_filesize() 헬퍼 함수

post_files.file_size(바이트 단위 정수)를 사람이 읽기 쉬운 형식으로 변환하는 PHP 헬퍼 함수입니다. 파일 순위 탭과 게시판별 탭에서 사용됩니다.
 
바이트 범위 변환 단위 예시
1,048,576 이상 MB 5,242,880 bytes → 5.0MB
1,024 이상 KB 51,200 bytes → 50.0KB
1,024 미만 B 500 bytes → 500B

변환 공식: MB = round(bytes/1048576, 1) / KB = round(bytes/1024, 1) / B = bytes 그대로.


8. 4개 탭 종합 비교표

4개 탭의 특성을 한눈에 비교하여 상황에 맞는 탭을 빠르게 선택하세요.
 
URL 파라미터 필요 테이블 최대 결과 주요 분석 목적
🏆 인기 파일 순위 tab=rank post_files + download_log TOP 100 어떤 파일이 가장 많이 받히는가? 콘텐츠 인기도 분석.
📊 게시판별 통계 tab=boards boards + posts + post_files 전체 게시판 어느 게시판이 파일 활동이 활발한가? 게시판 성과 비교.
👥 회원별 이용량 tab=members members + download_log TOP 100 누가 파일을 많이 받는가? 헤비 유저 파악 및 포인트 경제 분석.
최근 다운로드 tab=recent download_log + 4테이블 JOIN 최근 200건 지금 무슨 파일이 받히고 있는가? 실시간 모니터링.


9. 전체 사용 절차


9.1 기본 조회

  1. 관리자 대시보드 → [다운로드 분석 통계] 메뉴 클릭
  2. 상단 KPI 카드에서 누적 다운로드•오늘 다운로드•전체 파일 수•소모 포인트 합계 확인
  3. 탭 클릭으로 원하는 분석 뷰 선택 (인기 파일 순위 → 게시판별 → 회원별 → 최근 로그)
  4. 각 탭 테이블에서 링크 클릭 시 해당 게시판•게시글로 새 탭 이동 가능


9.2 콘텐츠 전략 수립 프로세스

  1. [인기 파일 순위] 탭 → TOP 10 파일의 확장자•게시판•업로더 파악
  2. 인기 파일이 속한 게시판 확인 → [게시판별 통계] 탭에서 해당 게시판 다운로드 합계 비교
  3. [회원별 이용량] 탭 → 다운로드 TOP 10 회원 파악 → 포인트 보상 지급 대상 선정
  4. [최근 다운로드 로그] 탭 → 신규 업로드 파일 다운로드 시작 여부 실시간 확인
  5. 데이터 기반으로 인기 카테고리•파일 유형•업로더 패턴 파악 후 콘텐츠 운영 전략 수립


9.3 포인트 다운로드 현황 점검

  1. [KPI 카드] 소모 포인트 합계 확인 (전체 기간 누적)
  2. [최근 다운로드 로그] 탭 → 포인트 컬럼에서 "-NP" vs "무료" 비율 육안 확인
  3. [회원별 이용량] 탭 → 포인트 소모 상위 회원의 현재 잔액 확인 → 잔액 0 회원에게 보상 검토


10. 자주 묻는 질문 (FAQ)


Q1. 다운로드 통계 탭에 "다운로드 데이터가 없습니다"가 표시됩니다.

A. download_log 테이블이 없거나 비어있는 상태입니다. 테이블이 없으면 황색 경고 배너가 상단에 표시됩니다. 마이그레이션을 통해 download_log 테이블을 생성하고, 이후 다운로드가 발생하면 자동으로 로그가 쌓입니다.


Q2. 게시판별 통계에서 총 다운로드가 0인 게시판이 있습니다.

A. 해당 게시판의 활성 게시글에 첨부 파일이 없거나, 파일은 있지만 아직 다운로드가 발생하지 않은 경우입니다. post_files.download_count가 0이면 합산 결과도 0입니다.


Q3. 회원별 이용량에 비회원이 표시되지 않습니다.

A. 회원별 이용량 탭은 INNER JOIN members ON m.id=dl.member_id를 사용하므로 member_id=0인 비회원 다운로드는 포함되지 않습니다. 비회원의 다운로드는 [최근 다운로드 로그] 탭에서 "비회원"으로 표시됩니다.


Q4. 인기 파일 순위에 파일이 나타나지 않습니다.

A. 다음을 확인하세요: ① download_log 테이블 존재 여부. ② post_files에 post_id>0인 파일이 있는지. ③ 해당 파일이 첨부된 게시글의 status가 1(활성)인지. 비활성 게시글(status≠1)의 파일은 순위에서 제외됩니다.


Q5. 파일 크기가 "0B"로 표시됩니다.

A. post_files.file_size 컬럼이 0 또는 NULL로 저장된 파일입니다. 파일 업로드 시 file_size가 정상적으로 기록되지 않은 경우입니다. 해당 파일을 다시 업로드하거나 DB를 직접 수정하여 file_size를 채워야 합니다.


Q6. 같은 파일을 여러 번 다운로드해도 횟수가 올라가지 않습니다.

A. download_count는 download_log 레코드가 INSERT될 때 증가합니다. 다운로드 처리 코드에서 download_log INSERT와 download_count 업데이트 로직이 정상적으로 실행되는지 확인하세요.


Q7. 최근 200건 이전 이력을 확인하려면?

A. 현재 [최근 다운로드 로그] 탭은 LIMIT 200으로 최근 200건만 표시합니다. 더 오래된 이력은 DB에서 직접 SELECT * FROM download_log ORDER BY id DESC LIMIT N OFFSET M 쿼리로 조회하거나, 개발자가 페이지네이션 기능을 추가해야 합니다.


11. 용어 정리

용어 설명
download_log 다운로드 이벤트 기록 테이블. id/file_id/post_id/member_id/ip/point_used/created_at 컬럼.
post_files 게시글 첨부 파일 메타 테이블. id/post_id/orig_name/file_ext/file_size/download_count 컬럼.
hasDlLog download_log 테이블 존재 여부 PHP 변수. false면 이력 기반 기능 비활성화.
file_id download_log.file_id. 다운로드된 파일의 post_files.id 참조 외래키.
post_id download_log.post_id. 다운로드된 파일이 첨부된 게시글 ID.
member_id download_log.member_id. 다운로드한 회원 ID. 비회원은 0.
point_used download_log.point_used. 해당 다운로드에 소모된 포인트. 무료면 0.
download_count post_files.download_count. 해당 파일의 누적 다운로드 횟수 카운터.
orig_name post_files.orig_name. 업로드 시 원본 파일명.
file_ext post_files.file_ext. 파일 확장자(소문자, 예: pdf, zip). 화면에서 대문자로 표시.
file_size post_files.file_size. 파일 크기(바이트 단위 정수). dl_filesize()로 KB/MB 변환.
dl_filesize() 바이트를 KB/MB로 변환하는 PHP 헬퍼 함수. 1MB=1048576B, 1KB=1024B 기준.
dl_count 회원별 이용량 탭의 집계 컬럼. COUNT(download_log.id) WHERE member_id=회원ID.
total_point_used 회원별 이용량 탭의 집계 컬럼. COALESCE(SUM(point_used),0).
total_downloads 게시판별 통계 탭의 집계 컬럼. COALESCE(SUM(post_files.download_count),0).
total_size 게시판별 통계 탭의 집계 컬럼. COALESCE(SUM(post_files.file_size),0).
file_count 게시판별 통계 탭의 집계 컬럼. COUNT(DISTINCT post_files.id).
p.status=1 활성 게시글 필터. 비공개/삭제된 게시글의 파일은 순위에서 제외.
b.status=1 활성 게시판 필터. 비활성 게시판은 게시판별 통계에서 제외.
COALESCE(SUM(...),0) SUM 결과가 NULL이면 0으로 대체. 데이터 없는 게시판도 정상 표시.

댓글0

로그인 후 댓글을 작성할 수 있습니다.
5. 관리자 기능 사용법 페이지 관리 2026.04.21 5. 관리자 기능 사용법 전체 공지 2026.04.21 5. 관리자 기능 사용법 팝업 관리 2026.04.21 5. 관리자 기능 사용법 게시판 관리 2026.04.21 5. 관리자 기능 사용법 대시보드 2026.04.21
30
전체 회원
269
전체 게시글
144
전체 댓글
1
오늘 방문
28,533
전체 방문
1
현재 접속
인기글 7일 이내
최신글
최신댓글
목록