휴면계정 정리
본문
<?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']."<br>";
// 포인트 테이블값 삭제
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']}' ");
}
?>
위 코드를 이용했으나
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
// 포인트 테이블값 삭제 |
09 |
sql_query( " delete from {$g5['point_table']} where mb_id = '{$row['mb_id']}' " ); |
10 |
// 회원 포인트값을 0으로 |
11 |
sql_query( " update {$g5['member_table']} set mb_point=0 where mb_id = '{$row['mb_id']}' " ); |
12 |
이문장을 빼고 회원삭제 명령어를 넣으세요 |
select 로 처리해야할 양을 대략파악후 건수단위로 과거내역부터 삭제하시면 될것 같습니다.
db 작업상 풀백업한번 받으시고 진행하시는게 좋아보입니다.
답변을 작성하시기 전에 로그인 해주세요.