마루인터넷 :: 커뮤니티

이미지자료실

프로그램팁 홈 > My웹Tip > 프로그램팁

[그누보드] 계정 정보 출력하기 (게시물 갯수/회원 수/계정 사용량/DB 사용량 등등)
  글쓴이 : maruhosting 조회 : 26,941  추천 :  
 space.inc.zip (931byte) [1] DATE : 2009-02-12 08:30:40

심심해서 한번 만들어 본 소스입니다.
스샷도 첨부해 놓았습니다. 보이시죠?? ^^
아래 소스를 복사하시거나 첨부한 파일을 다운로드하셔서 알맞게 수정하신 뒤에 사용하시기 바랍니다.
참고로 첨부된 소스에는 설명에 해당하는 주석이 하나도 없습니다. ^^;;
워낙 실력도 형편없고, 거의 짜집기 한거라서 ^^;;
여기에 사용된 거의 모든 소스가 N사이트에서 찾아서 바로바로 짜집기해서 만든 겁니다. ^^;;
아래는 허접한 소스입니다.

<?
// Byte를 KB, MB, GB로 변환하는 함수
function size($size) {
if(!$size) return "0 Byte";
if($size < 1024) {
return "$size Byte";
} elseif($size >= 1024 && $size < 1024 * 1024) {
return sprintf("%0.1f",$size / 1024)." KB";
} elseif($size >= 1024 * 1024 && $size < 1024 * 1024 * 1024) {
return sprintf("%0.1f",$size / 1024 / 1024)." MB";
} else {
return sprintf("%0.1f",$size / 1024 / 1024 / 1024)." GB";
}
}

// 총 게시물의 갯수, 총 코멘트의 갯수, 게시판의 갯수, 그리고 각 게시판의 테이블 명을 구함
$q_count = mysql_query("select * from g4_board");
$count_write = 0;
$count_comment = 0;
$count_board = 0;
$bo_tb = "0";
while($data=mysql_fetch_array($q_count)) {
$count_write += $data[bo_count_write];
$count_comment += $data[bo_count_comment];
$count_board++;
$bo_tb = $bo_tb."|".$data[bo_table];
}

// 각 게시판의 총 게시물 수, 총 코멘트 수, 새 게시물 수를 구함(현재 날짜와 등록된 날짜를 비교하여 같으면 새 게시물)
$bo_tb = explode("|", $bo_tb);
$i = 1;
$new_comment = 0;
$new_article = 0;
while($i<=$count_board) {
$q_new = mysql_query("select * from g4_write_".$bo_tb[$i]);
$m_total[$bo_tb[$i]] = 0;
while($dat=mysql_fetch_array($q_new)) {
$m_total[$bo_tb[$i]]++;
$m_article[$bo_tb[$i]] = 0;
if(substr($dat[wr_datetime],0,10)!=date("Y-m-d")) continue;
if($dat[wr_comment]<0) $new_comment++;
else {
$new_article++;
$m_article[$bo_tb[$i]]++;
}
}
$i++;
}
// 여기서 구한 각 게시판의 총 게시물과 새 게시물의 수는 각각 $m_total[테이블명], $m_article[테이블명] 으로 사용하시면 됩니다.

// 현재 접속한 회원 또는 비회원의 수를 구함(저는 스킨만들어 쓰기가 귀찮아서 이방법을;;;)
$q_connect = mysql_query("select * from g4_login");
$count_no_mb = 0;
$count_mb = 0;
while($data=mysql_fetch_array($q_connect)) {
if($data[mb_id] == "") $count_no_mb++;
elseif($data[mb_id] != "yhs6374") $count_mb++; // yhs6374 를 관리자 아이디로...
}

// 오늘 새로 누적된 포인트와 총 누적된 포인트를 구함
$q_point = mysql_query("select * from g4_point");
$new_point = 0;
$all_point = 0;
while($data=mysql_fetch_array($q_point)) {
if(substr($data[po_datetime],0,10)==date("Y-m-d")) $new_point += $data[po_point];
$all_point += $data[po_point];
}

// 새 회원 수와 총 회원 수를 구함
$m_count = mysql_query("select * from g4_member");
$new_member = 0;
$count_member = 0;
while($data=mysql_fetch_array($m_count)) {
if($data[mb_nick]=="[삭제됨]") continue;
if(substr($data[mb_datetime],0,10)==date("Y-m-d")) $new_member++;
$count_member++;
}

// 모든 게시판에 첨부된 파일의 갯수를 구함
$d_count = mysql_query("select * from g4_board_file");
$count_data = 0;
while(mysql_fetch_row($d_count)) {
$count_data++;
}

// 계정의 사용량을 구함
$account_space = `du -sb $g4[path]`;
$account_space = substr($account_space,0,strlen($account_space)-3);

// DATA 폴더의 용량을 구함
$data_space = `du -sb $g4[path]/data`;
$data_space = substr($data_space,0,strlen($data_space)-8);

// DB의 사용량을 구함
$result = mysql_query("SHOW TABLE STATUS");
$db_using = 0;
while($dbData=mysql_fetch_array($result)) {
$db_using += $dbData[Data_length]+$dbData[Index_length];
}
?>

=============================================================

소스가 끝났습니다.
아래는 적용된 예제입니다.

<table cellpadding=0 cellspacing=0 width=160>
<tr>
<td align=center>
- <b>계정 정보</b> -
</td>
</tr>
<tr>
<td style="font-size:8pt;">
File : <?=size($account_space)?><br>
Data : <?=size($data_space)?><br>
DB : <?=size($db_using)?><br>
&nbsp;
</td>
</tr>
<tr>
<td align=center>
- <b>게시판 정보</b> -
</td>
</tr>
<tr>
<td style="font-size:8pt;">
Board : <?=$count_board?><br>
Data File : <?=number_format($count_data)?><br>
New Article : <?=number_format($new_article)?><br>
Total Article : <?=number_format($count_write)?><br>
New Comment : <?=number_format($new_comment)?><br>
Total Comment : <?=number_format($count_comment)?><br>
New Member : <?=number_format($new_member)?><br>
Total Member : <?=number_format($count_member)?><br>
Connect : <?=number_format($count_no_mb+$count_mb)?><br>
&nbsp;(Member : <?=number_format($count_mb)?>)<br>
New Point : <?=number_format($new_point)?><br>
Total Point : <?=number_format($all_point)?><br>
&nbsp;
</td>
</tr>
</table>

=============================================================

각 게시판의 새 게시물 수와 총 게시물 수는

공지사항(<?=number_format($m_article[notice])?>/<?=number_format($m_total[notice]?>)

이런 형식으로 사용하시면 됩니다.