웹마스터 팁

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

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


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에 추가해도 된다.


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

::::::::::::::::::::::::::         메리크리스마스      ::::::::::::::::::::::::::::::::