휴면계정 정리 채택완료
</p>
<p><?php
include_once('./_common.php');
$login_date = date('Y-m-d H:i:s', strtotime(G5_TIME_YMDHIS . ' -6 months'));
$sql_login = " select * from {$g5['member_table']} where mb_today_login < '$login_date' order by mb_today_login desc ";
$result = sql_query($sql_login);
for ($i=0; $row=sql_fetch_array($result); $i++) {
echo $row['mb_today_login']." ".$row['mb_id']." 포인트 ".$row['mb_point']."
";
// 포인트 테이블값 삭제
sql_query(" delete from {$g5['point_table']} where mb_id = '{$row['mb_id']}' ");
// 회원 포인트값을 0으로
sql_query(" update {$g5['member_table']} set mb_point=0 where mb_id = '{$row['mb_id']}' ");
}
?></p>
<p>
위 코드를 이용했으나
DB서버 부하가 커서 그런가 안되는데..
직접 SSH로 mysql 연결해서 명령어를 쳐서
지금으로부터 6개월전까지 접속안한 유저를 정리하고 싶다면
어떻게 해야할까요?
답변 3개
위 코드는 회원을 삭제하는 게 아니고 포인트만 초기화하는 쿼리입니다.
회원 삭제를 원한다면 회원 포인트값을 0으로하는 쿼리 대신에 아래 코드를 추가해야 할 것 같네요.
sql_query(" delete from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ");
기존 포인트 삭제 쿼리는 그대로 남겨두고 같이 실행해야 DB에 불필요한 데이터가 남지 않습니다.
처리할 양이 너무 많아서 문제가 생긴다면 한꺼번에 하기보다는 -6 months 이 부분을 여유 있게 설정해서 처리량을 줄이고 순차적으로 삭제해보세요.
참고하세요. 새로 정리했습니다.
http://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=278
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
select 로 처리해야할 양을 대략파악후 건수단위로 과거내역부터 삭제하시면 될것 같습니다.
db 작업상 풀백업한번 받으시고 진행하시는게 좋아보입니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
회원님들께 글남긴게 있는데 ..
혹시 안바쁘시면 제가 뭘잘못하고있기에 안되는지 제가올린글에 답변 해주실수있을까요..