BOARD

팁·활용

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

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 24회 작성일 26-09-29 16:35

본문

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

그누보드 운영 중 사이트 전체의 총 게시물 수와 댓글 수를 메인이나 원하는 위치에 빠르게 출력하는 방법과 주의사항을 확인합니다.

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

그누보드에서는 각 게시판의 통계 필드(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 쿼리에 추가하여 집계할 수 있습니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.