그누보드 사이트 전체 게시물 및 댓글 통계 출력하기
페이지 정보

본문
그누보드 운영 중 사이트 전체의 총 게시물 수와 댓글 수를 메인이나 원하는 위치에 빠르게 출력하는 방법과 주의사항을 확인합니다.
그누보드 사이트 전체 게시물 및 댓글 통계 출력하기
그누보드에서는 각 게시판의 통계 필드(bo_count_write, bo_count_comment)를 활용하여 개별 게시판을 순회하지 않고 사이트 전체의 게시물 수와 댓글 수를 간단하게 집계할 수 있습니다.
1. PHP 집계 코드 작성
원하는 위치에 아래의 PHP 코드를 추가하여 전체 게시물 수와 총 코멘트(댓글) 수를 가져옵니다.
<?php
// 총게시물수
$write_total = sql_fetch(" select sum(bo_count_write) as sum_count_write from {$g5['board_table']} ");
$total_cnt = $write_total['sum_count_write'];
// 총코멘트수
$comment_total = sql_fetch(" select sum(bo_count_comment) as sum_count_comment from {$g5['board_table']} ");
$total_cnt2 = $comment_total['sum_count_comment'];
?>
2. 화면 출력 방법
가져온 변수 값을 number_format() 함수로 감싸 천 단위로 쉼표를 표시하여 출력합니다.
총게시물수: <?php echo number_format($total_cnt);?>
총코멘트수: <?php echo number_format($total_cnt2);?>
3. 주의 사항 및 확인
- 이 방식은
{$g5['board_table']}의 집계 필드(bo_count_write,bo_count_comment) 값을 합산하는 구조이므로, 글이나 댓글 작성 및 삭제 후 카운트 갱신이 정상적으로 이루어졌다는 가전하에 가장 빠르고 부하가 적습니다. - 글 삭제나 통신 환경 문제 등으로 카운트 갱신이 누락된 경우 실제 글 수와 차이가 발생할 수 있습니다.
게시판 통계 쿼리 사용 시 성능 부하와 정확도 문제
그누보드에서 {$g5['board_table']} 테이블의 bo_count_write 및 bo_count_comment 필드를 대상으로 SUM() 함수를 사용하는 쿼리는 각 게시판 테이블을 전수 조사하는 방식보다 효율적입니다. 하지만 대규모 사이트 환경이나 데이터 관리 상황에 따라 다음과 같은 성능 및 정확도 문제가 발생할 수 있습니다.
1. 대규모 사이트에서의 성능 부하
데이터가 매우 많은 대규모 사이트에서 통계 데이터를 처리할 때, 최적화된 로직이 없다면 대량의 데이터 연산 과정에서 서버 부하가 발생할 수 있습니다.
2. 카운트 데이터 누락 및 정확도 한계
이 집계 방식은 글이나 코멘트 작성 및 삭제 시 카운트가 정상적으로 업데이트되었다는 전제하에 작동합니다. 글 삭제 과정에서 렉이나 통신 환경 문제 등으로 인해 DB 갱신이 누락된 경우, 실제 데이터와 통계 수치 간에 오차가 발생할 수 있습니다.
3. 대응 및 확인 사항
민감한 카운트가 필요한 경우, 현재 bo_count 값과 실제 테이블의 글 수를 비교하여 숫자가 다른 경우 갱신해 주는 PHP 코드를 작성해 서버 크론(cron)으로 주기적으로 실행하거나, 관리자가 수동으로 갱신하여 오차를 보정할 수 있습니다.
특정 게시판 및 그룹별 게시물·댓글 수 추출하기
전체 통계 외에 특정 게시판이나 그룹별로 세분화된 통계 데이터를 출력하려면 테이블 조건식을 추가한 쿼리나 함수를 사용합니다.
1. 특정 게시판의 게시물 수 및 댓글 수 추출
특정 게시판 테이블($bo_table)의 게시물 수와 댓글 수를 각각 조회하려면 board_table에서 해당 게시판 행을 지정하는 조건을 부여합니다.
<?php
// 특정 게시판 전체 게시물 수
$row = sql_fetch(" select bo_count_write from {$g5['board_table']} where bo_table = '$bo_table' ");
$bo_write_cnt = (int)$row['bo_count_write'];
// 특정 게시판 전체 댓글 수
$row_comment = sql_fetch(" select bo_count_comment from {$g5['board_table']} where bo_table = '$bo_table' ");
$bo_comment_cnt = (int)$row_comment['bo_count_comment'];
?>
2. 화면 출력
구한 변수 값을 number_format() 함수로 감싸서 원하는 위치에 출력합니다.
게시판 게시물 수: <?php echo number_format($bo_write_cnt);?>
게시판 댓글 수: <?php echo number_format($bo_comment_cnt);?>
3. 참고 사항
- 위 코드는 특정 게시판의 아이디(
$bo_table) 값을 인자로 받아 처리하는 환경에서 유용합니다. - 그룹 단위 통계의 경우 게시판 그룹 아이디(
gr_id) 조건을board_table쿼리에 추가하여 집계할 수 있습니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드 외부 스팸 차단 라이브러리(zmSpamFree) 연동 방법 26.09.29
- 다음글그누보드 특정 게시판 이미지 파일만 업로드 제한 방법 26.09.29
댓글목록
등록된 댓글이 없습니다.