휴면계정 정리

휴면계정 정리

QA

휴면계정 정리

본문


<?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 작업상 풀백업한번 받으시고 진행하시는게 좋아보입니다. 

답변을 작성하시기 전에 로그인 해주세요.
전체 87
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT