웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
일정시간 이 지난 게시물 정리하기..
2003.12.24 11:10
대단한 건 아니구요..
데이터가 많이 늘어날 경우 서버공간의 문제도 있고 해서..
일정기간동안만 데이터를 보관하는 방식으로 프로그램을 해 봤습니다.
테스트를 거쳐서 현재 사용하고 있는 겁니다.
더 좋은 방법 있으시면 알려주세요..
##############################################################################################
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에 추가해도 된다.
##################################################################################################
:::::::::::::::::::::::::: 메리크리스마스 ::::::::::::::::::::::::::::::::
데이터가 많이 늘어날 경우 서버공간의 문제도 있고 해서..
일정기간동안만 데이터를 보관하는 방식으로 프로그램을 해 봤습니다.
테스트를 거쳐서 현재 사용하고 있는 겁니다.
더 좋은 방법 있으시면 알려주세요..
##############################################################################################
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
제목 | 글쓴이 | 날짜 |
---|---|---|
[iframe:아이프레임] 내용에 맞게 사이즈 조절하기 한번입력으로 끝.[다른방법:중복아닌듯] [45] | beMax | 2004.04.23 |
(For 초보)원클릭으로 여러프레임 컨트롤하기 [2] | 쉬드 | 2004.04.19 |
자기가 살아온 시간 구하기.. 데스크탑에 나타내기 [4] | kein23 | 2004.04.14 |
브라우저 버젼별 다른 페이지 보여주기 [2] | Kuldahar | 2004.04.13 |
바보같은 MS의 parseInt 버그. [4] | 김관석 | 2004.04.09 |
XP계열의 방문자 컴에서 ClearType 효과 사용여부 확인 [4] | YeUPy | 2004.04.04 |
팝업공지창 2개이상 띄우기(시간제한 가능) [8] | lemin | 2004.03.23 |
허접한 풀다운 메뉴 소스입니다. (유용한 팁 일지는 모르겠네요.)
[9]
![]() | tintintm | 2004.03.23 |
버튼 만들기 [1] | 旻天 | 2004.03.23 |
MS agent online object - Default Character 인 Merlin Action 추가 [2] | 꽃ちゃん | 2004.03.19 |
움직이는 타이틀바 [4] | 김동현 | 2004.03.18 |
웹브라우저 상태바가 밑으로 내려오는 소스 [5] | 프리서버 | 2004.03.16 |
브라우져(윈도우) 창의 크기(사이즈)를 조절하는 소스입니다 [5] | 나야 | 2004.03.15 |
프레임사이트에서 자식 프레임(URL)로 직접 치고 들어 올경우 다시 프레임 부모로 돌려보내는 소스 | 나야 | 2004.03.15 |
전체 include menu 만들기(롤오버 이미지 사용) [4] | Neoyoung | 2004.03.14 |
[초간단 자바스크립트!] 서브메뉴 만들기...~ [11] | ∑Ztxy | 2004.03.10 |
뉴스티커
[16]
![]() | zero | 2004.03.10 |
보안문서 만들기 [5] | 민우주 | 2004.03.07 |
팝업 창 띄우고 어미창 사라지게 하는 소스 [5] | piasol | 2004.03.06 |
방문자 OS보여주기 [5] | 구조반 | 2004.03.05 |