웹마스터 팁

대단한 건 아니구요..
데이터가 많이 늘어날 경우 서버공간의 문제도 있고 해서..
일정기간동안만 데이터를 보관하는 방식으로 프로그램을 해 봤습니다.
테스트를 거쳐서 현재 사용하고 있는 겁니다.
더 좋은 방법 있으시면 알려주세요..

##############################################################################################


1. 아래와 같이 파일을 만들어 php파일로 저장한다.


#!/usr/local/php/bin/php

<?
$dbhost="호스트이름";
$dbuser="디비아이디";
$dbpass="디비패스";
$dbname="디비이름";

//DB connect
$connect=mysql_connect($dbhost,$dbuser,$dbpass) or die("<script>alert(' DB CONNECT ERROR ');</script>");
mysql_select_db($dbname,$connect);

//실행을 위한 테이블명 정의..
$Clear_board=array(
"essay" => true,
//"art"   => true,
//"theme" => true,
//"plant" => true,
//"jujea" => true,
//"member" => true,
);

$admin_query=mysql_query("select * from zetyx_admin_table order by no desc",$connect);
$dbtotal=mysql_num_rows($admin_query);

$nowy=date("Y",time());
$nowm=date("m",time());
$nowd=date("d",time());

//2달이 지난 게시물은 삭제한다.
$bbbfmonthdate=mktime(0,0,0,$nowm -1,1,$nowy);

for($i=1;$i<=$dbtotal;$i++){
  $adminRow=mysql_fetch_array($admin_query);
  
  if($Clear_board[$adminRow[name]] == true){

          $boardtable="zetyx_board_".$adminRow[name];
          $commenttable="zetyx_board_comment_".$adminRow[name];
          $boardname=$adminRow[name];


          $bQuery=mysql_query("select * from $boardtable  where reg_date < $bbbfmonthdate and depth=0 order by no desc",$connect);
          
          if(mysql_num_rows($bQuery)>0){
                 $bTotal=mysql_num_rows($bQuery);
                 for($k=1;$k<=$bTotal;$k++){
                   $bRow=mysql_fetch_array($bQuery);

                   ### 답글 지우기..
           $reQuery=mysql_query("select * from $boardtable where father=$bRow[no]",$connect);
                   if(mysql_num_rows($reQuery)>0){
                         $retotal=mysql_num_rows($reQuery);
                     for($j=1;$j<=$retotal;$j++){
                           $reRow=mysql_fetch_array($reQuery);
                           // 파일지우기..
                           if($reRow[file_name1] and file_exists("/home/ID/public_html/zboard/$reRow[file_name1]")){
                                 unlink("/home/ID/public_html/zboard/$reRow[file_name1]");
                           }
                           if($reRow[file_name2] and file_exists("/home/ID/public_html/zboard/$reRow[file_name2]")){
                                 unlink("/home/ID/public_html/zboard/$reRow[file_name2]");
                           }
                           if($reRow[s_file_name1] and file_exists("/home/ID/public_html/zboard/$reRow[s_file_name1]")){
                                 unlink("/home/ID/public_html/zboard/$reRow[s_file_name1]");
                           }
                           if($reRow[s_file_name2] and file_exists("/home/ID/public_html/zboard/$reRow[s_file_name2]")){
                                 unlink("/home/ID/public_html/zboard/$reRow[s_file_name2]");
                           }
                         } //for
                   } //if

                   ### 원문 파일 지우기..
                   if($bRow[file_name1] and file_exists("/home/ID/public_html/zboard/$bRow[file_name1]")){
                         unlink("/home/ID/public_html/zboard/$bRow[file_name1]");
                   }
                   if($bRow[file_name2] and file_exists("/home/ID/public_html/zboard/$bRow[file_name2]")){
                         unlink("/home/ID/public_html/zboard/$bRow[file_name2]");
                   }
                   if($bRow[s_file_name1] and file_exists("/home/ID/public_html/zboard/$bRow[s_file_name1]")){
                         unlink("/home/ID/public_html/zboard/$bRow[s_file_name1]");
                   }
                   if($bRow[s_file_name2] and file_exists("/home/ID/public_html/zboard/$bRow[s_file_name2]")){
                         unlink("/home/ID/public_html/zboard/$bRow[s_file_name2]");
                   }
                  
                   // 디비지우기
                   mysql_query("Delete from $boardtable where no=$bRow[no]",$connect);
                   mysql_query("Delete from $boardtable where father=$bRow[no]",$connect);
                   mysql_query("Delete from $commenttable where parent=$bRow[no]",$connect);
                 } //for
          } //if
          
          $nquery=mysql_query("select * from $boardtable",$connect);
          $nTotal=mysql_num_rows($nquery);
          
           mysql_query("update zetyx_admin_table set total_article=$nTotal where name='$adminRow[name]'",$connect);


  } //if
} //for

mysql_close($connect);
?>


2. 위 파일의 저장이 끝났으면 자동으로 실행될 수 있도록

#!/bin/bash
/위/파일/경로/파일명

같이 하여 /etc/cron.monthly/ 에 확장자없는 파일명(예 : ZboardClear )으로 저장하고

#chmod 700 /etc/cron.monthly/ZboardClear  명령으로 루트만이 실행할 수 있는 권한을 준다.

또는 crontab에 추가해도 된다.


##################################################################################################

::::::::::::::::::::::::::         메리크리스마스      ::::::::::::::::::::::::::::::::
제목 글쓴이 날짜
일정시간 이 지난 게시물 정리하기.. [3] 명동욱 2003.12.24
[MySQL] Set 형 자료형.. [3] 서영태 2003.12.24
나도 @ 도메인 서비스를 해보자 [29] 김병철 2003.12.19
[제로카운터] 자동으로 DB를 지우자. (IP와 referer 5일 분량만 남기기) [4] 이주경 2003.12.17
카일레라 서버 페이지 만들기. [2] teslaMINT 2003.12.09
편법을 이용한 inlive 방송여부 체크 [7] 심심타 2003.12.09
DB에서 받은 데이터 배열로 하나씩 뿌리기 LetMeLove 2003.12.09
세션을 이용한 관리자 모드 구축하기 3강 [6] 박정호 2003.12.09
세션을 이용한 관리자 모드 구축하기 2강 [6] 박정호 2003.12.09
세션을 이용한 관리자 모드 구축하기 1강(중복?) 박정호 2003.12.09
쉘 명령어 사용하기 [11] 9000㎒ 2003.12.02
랜덤 배경음악 만들기. [6] 폭주나루 2003.12.01
throttle-me를 이용한 계정 트래픽 나타내기 [39] file 旻天 2003.11.27
제로보드회원의 포인트 랭킹 체크하기 sql 정리 [4] 한꼬마 2003.11.26
한꼬마의 제로보드 이용법 (sql로 테이블 호출) [2] 한꼬마 2003.11.26
[Lotto 6/45] 로또 추첨 구현하기~ [5] file 전원주 2003.11.21
한꼬마의 제로보드 활용방법 (로그인 값 알아 보기) [3] 한꼬마 2003.11.20
회원 포인트 랭킹(중복 -_-a) [4] file weky 2003.11.15
제로보드회원의 포인트 랭킹 체크하기 [13] file 전원주 2003.11.15
지금은 시스템 점검중 만들기... [8] zentoo.com 2003.11.11