그누보드 장기 미접속 회원 포인트 일괄 초기화 방법
페이지 정보

본문
1년 이상 로그인하지 않은 그누보드 장기 미접속 회원의 포인트를 포인트 로그 테이블 내역까지 깔끔하게 일괄 초기화하는 방법을 안내합니다.
1년 이상 미접속 회원 포인트 초기화 스크립트 작성 및 실행 방법
그누보드에서 1년 이상 로그인하지 않은 장기 미접속 회원의 포인트를 테이블 내역까지 일괄 초기화하려면, 임의의 PHP 파일(예: point_reset.php)을 생성하여 미접속 회원 조회 및 초기화 로직을 작성해야 합니다.
1. 스크립트 파일 생성 및 코드 작성
그누보드가 설치된 경로에 임의의 이름(예: point_reset.php)으로 신규 파일을 생성하고 아래의 전체 내용을 복사하여 추가합니다.
<?php
include_once('./_common.php');
$login_date = date('Y-m-d H:i:s', strtotime(G5_TIME_YMDHIS. ' -1 years'));
$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']}' ");
}
?>
2. 실행 전 주의사항 및 사전 확인
- 테스트 서버에서 사전 테스트를 진행하거나 반드시 포인트 테이블을 별도로 백업하고 진행하세요.
- 파일을 처음 생성하고 실행하면 삭제 및 업데이트 쿼리가 주석(
//) 처리되어 있어 포인트가 바로 삭제되지 않고 대상 회원 목록만 화면에 출력됩니다. 좌측 날짜는 각 회원의 최근 로그인 날짜입니다. - 설정한 기간의 포인트 삭제 대상 회원이 제대로 출력되는지 먼저 확인하세요.
3. 포인트 초기화 쿼리 실행
- 대상 회원 목록이 올바르게 출력된 것을 확인한 후, 코드 내에 있는 두 줄의 주석 앞 부분(
//)을 제거하여 주석을 해제합니다. - 파일을 새로고침하면 포인트 테이블의 내역이 삭제되고 회원 테이블의 포인트(
mb_point) 값이0으로 초기화됩니다.
4. 예외 및 처리량 조절 조건
- 처리할 데이터 양이 너무 많아서 서버 부하가 발생한다면 코드 내
-1 years부분을 적당히 수정(예:-6 months등)하여 처리량을 줄이고 순차적으로 삭제하세요. - 1년이 아닌 2년 전 기준으로 변경하려면
-1 years를-2 years로 수정하고, 월 단위로 설정하려면-12 months등으로 설정할 수 있습니다.
회원 테이블의 mb_point와 포인트 테이블 로그를 함께 지워야 하는 이유
그누보드에서 포인트를 초기화할 때 회원 테이블의 mb_point 값만 0으로 수정하는 것은 충분하지 않습니다. 포인트 내역이 남아있는 상태에서 추후 새로운 포인트가 지급되거나 변동이 생기면, 시스템이 기존에 누적된 point_table의 로그 내역을 합산하여 회원 테이블의 mb_point 필드를 다시 업데이트해버리기 때문입니다. 따라서 깔끔한 초기화를 위해서는 회원 테이블의 잔액 필드(mb_point)를 0으로 만드는 것과 함께 point_table에 기록된 기존 내역까지 전부 삭제해야 데이터 불일치 문제를 방지할 수 있습니다.
장기 미접속 회원 포인트 초기화 전 대상 미리보기 방법
그누보드에서 1년 이상 로그인하지 않은 장기 미접속 회원의 포인트를 초기화하기 전, 실수로 정상 회원 포인트가 삭제되는 사고를 방지하고 대상자가 올바르게 조회되는지 사전에 검증하려면 삭제 쿼리를 주석 처리한 상태로 스크립트를 실행해야 합니다.
1. 사전 준비 및 확인 사항
- 테스트 서버에서 사전 테스트를 진행하거나 반드시 포인트 테이블을 별도로 백업한 뒤 진행합니다.
- 그누보드가 설치된 곳에 임의의 PHP 파일(예:
point_reset.php)을 생성합니다.
2. 스크립트 작성 및 대상 미리보기 실행
생성한 파일에 아래 코드를 추가하고 웹 브라우저에서 실행합니다. 파일을 처음 실행할 때 삭제 쿼리는 주석(//) 처리되어 있어 포인트는 바로 삭제되지 않고 회원 목록만 출력됩니다.
<?php
include_once('./_common.php');
$login_date = date('Y-m-d H:i:s', strtotime(G5_TIME_YMDHIS. ' -1 years'));
$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']}' ");
}
?>
3. 결과 확인 및 다음 행동
- 화면에 출력된 좌측 날짜는 각 회원의 최근 로그인 날짜(
mb_today_login)입니다. - 설정한 기간의 포인트 삭제 대상 회원이 제대로 출력되는지 확인합니다.
- 대상자가 올바르게 확인되면 코드 앞부분의
//(sql_query함수를 감싼 주석)을 제거하여 주석을 해제하고 페이지를 새로고침하면 포인트 값이 초기화됩니다.
대량 데이터 처리 시 서버 부하 발생 시 기간 조건 수정 방법
처리할 데이터 양이 너무 많아 서버 부하가 발생한다면, 기준 기간 설정을 -1 years 대신 -6 months 또는 월 단위(-12 months 등)로 적당히 줄여서 순차적으로 처리량을 분산해 삭제를 진행할 수 있습니다.
장기 미접속 회원 포인트 일괄 초기화 방법
그누보드 환경에서 최근 로그인 기록을 기준으로 1년 동안 로그인하지 않은 회원들의 포인트를 테이블 내역까지 깔끔하게 일괄 초기화하려면, 테스트 서버에서 사전 테스트를 하거나 반드시 포인트 테이블을 별도로 백업하고 진행해야 합니다.
1. 초기화 스크립트 작성 및 실행
Q1의 스크립트 작성 절차를 참고하여 파일을 생성하고 실행합니다. 파일을 처음 실행하면 삭제 쿼리가 주석 처리되어 있어 포인트는 삭제되지 않고 대상 회원 목록만 출력됩니다.
2. 대상 확인 및 초기화
좌측 날짜(최근 로그인 날짜)를 기준으로 삭제 대상 회원이 올바르게 출력되는지 확인한 후, 코드 내 주석(//)을 제거하고 새로고침하여 포인트를 초기화합니다.
3. 기간 설정 변경 및 대량 처리 시 주의사항
- 1년이 아닌 2년 전 기준으로 변경하려면
-1 years부분을-2 years로 수정합니다. - 월 단위로 설정하려면
-12 months로 설정합니다. - 처리할 양이 너무 많아서 서버 부하 등 문제가 생긴다면
-1 years부분을 적당히 설정하여 처리량을 줄이고 순차적으로 삭제해야 합니다.
참고 사항: 포인트 유효 기간 설정과의 차이
그누보드의 관리자 페이지 > 환경 설정 > 기본 환경 설정 > 포인트 유효기간 설정은 포인트가 적립된 시점 기준으로 일정 기간(예: 1년) 동안 사용하지 않으면 자동으로 소멸되는 방식입니다. 이는 로그인 기록을 기준으로 일괄 정리하는 장기 미접속 회원의 포인트 정리와는 다른 용도입니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드 비회원 작성 게시글 비밀댓글 작성 제한 방법 26.10.07
- 다음글그누보드4에 zmSpamFree 캡차 모듈 적용 및 연동 방법 26.10.07
댓글목록
등록된 댓글이 없습니다.