웹마스터 팁
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
-
9000㎒
2004.01.04 12:53
-
토끼군
2004.01.05 22:52
9000Mhz// 웹서버가 아닌 이상 꼭 붙여 줘야 합니다. -.- 아니면 php -q /path/to/php/file.php 이런 식으로 하던지요. -
아마존99
2004.03.09 09:53
전 iis서버를 쓰는데여
정리가 안되는것 같은데여
제목 | 글쓴이 | 날짜 |
---|---|---|
일정시간 이 지난 게시물 정리하기.. [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] | 旻天 | 2003.11.27 |
제로보드회원의 포인트 랭킹 체크하기 sql 정리 [4] | 한꼬마 | 2003.11.26 |
한꼬마의 제로보드 이용법 (sql로 테이블 호출) [2] | 한꼬마 | 2003.11.26 |
[Lotto 6/45] 로또 추첨 구현하기~ [5] | 전원주 | 2003.11.21 |
한꼬마의 제로보드 활용방법 (로그인 값 알아 보기) [3] | 한꼬마 | 2003.11.20 |
회원 포인트 랭킹(중복 -_-a) [4] | weky | 2003.11.15 |
제로보드회원의 포인트 랭킹 체크하기 [13] | 전원주 | 2003.11.15 |
지금은 시스템 점검중 만들기... [8] | zentoo.com | 2003.11.11 |
이건 Perl에서 많이 본겁니다; (#!/usr/bin/perl)
구지 PHP에서 붙이지 않아도 될것 같은데요; 쿨럭쿨럭 (추측일뿐;)