웹마스터 팁
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
제목 | 글쓴이 | 날짜 |
---|---|---|
초보분들을 위한 연산자 총정리 [6] | TheMics | 2002.01.29 |
이제 PHP에 ?id=가나다라 같은것을 넣자! [12] | 담배를끊으면복이옴과 | 2002.01.30 |
이제 홈페이지 업데이트 안하는 수모를 겪지 말자! [7] | 담배를끊으면복이옴과 | 2002.02.02 |
md5() 알고리듬 [8] | 양창민 | 2002.02.05 |
원고지 함수;; [3] | 디쓰 | 2002.02.07 |
한글 필터링 정확히 하기 [1] | mini | 2002.02.09 |
필터링조금 다른거.. [7] | 두기두바 | 2002.02.10 |
좋은 난수값을 얻기위한 시드배정 방법 mt_srand(), srand() | 차카게살자 | 2002.02.21 |
제로보드 분석 -1- [4] | 제키드+_+)/ | 2002.02.21 |
PHP 소스 보이게 하기; [5] | Topy | 2002.02.21 |
in_array 함수이용한 업로드금지 [3] | 김승제 | 2002.02.21 |
date 함수의 매개 변수 | Topy | 2002.02.22 |
제로보드 분석 -2- [2] | 제키드+_+)/ | 2002.02.22 |
복잡해? 줄여! [3] | 제키드+_+)/ | 2002.02.22 |
[lib] fun 문자열속의 url에 링크를 거는 함수 [2] | Topy | 2002.02.22 |
[lib] fun. alert message (경고 메시지) [1] | Topy | 2002.02.22 |
for 문에 대한 이해, 구구단 만들어 보기. [3] | Topy | 2002.02.22 |
http://홈주소/?mode=xxx 하는방법 :) [5] | 제니 | 2002.02.23 |
[re | 씽크식 PHP] 많고 많은 페이지들을 하나로 줄이자! [2] | John Sync. | 2002.02.24 |
많고 많은 페이지들을 하나로 줄이자! [7] | 제키드+_+)/ | 2002.02.23 |