BOARD

팁·활용

그누보드 장기 미접속 휴면 회원 일괄 삭제 및 완전 정리 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 2회 작성일 26-10-13 15:00

본문

그누보드 장기 미접속 휴면 회원 일괄 삭제 및 완전 정리 방법

그누보드 운영 중 오랫동안 로그인하지 않은 휴면 회원을 일괄 삭제하거나 아이디와 관련 데이터를 완전히 정리하여 사이트를 정돈하는 구체적인 스크립트 작성 및 실행 방법을 확인합니다.

그누보드 장기 미접속 휴면 회원 일괄 삭제 및 정리 방법

그누보드에서 오랫동안 로그인하지 않은 장기 미접속 회원을 일괄 삭제하거나 아이디까지 완전히 정리하려면 PHP 스크립트를 작성하여 실행해야 합니다. 처리할 데이터가 많아 서버 부하가 우려될 경우 -1 years 등의 기간 설정을 조절하여 순차적으로 처리하십시오.

사전 준비

  • 작업 전 반드시 데이터베이스(DB)를 백업하십시오.

1. 그누보드 기본 회원 삭제 함수 사용

회원 정보는 삭제되나 아이디는 DB에 남겨 동일 아이디로 재가입을 방지하는 방식입니다.

  1. 새 PHP 파일을 생성하고 아래 코드를 입력합니다.
<?php
include_once('./_common.php');
$login_date = date('Y-m-d H:i:s', strtotime(G5_TIME_YMDHIS. ' -1 years'));
$sql_login = " select mb_id, mb_today_login 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']."<br>";
 // 회원 삭제
 // member_delete($row['mb_id']);
}
?>
  1. 그누보드가 설치된 경로에 파일을 업로드한 후 실행하여 대상 회원 아이디와 최근 로그인 날짜가 올바르게 출력되는지 확인합니다.
  2. 목록이 정상적으로 출력되면 코드 내 // member_delete($row['mb_id']); 주석에서 //를 제거하고 새로고침하여 삭제를 완료합니다.

2. 회원 아이디까지 완전히 삭제하는 방법

회원 목록에서도 완전히 삭제되어 해당 아이디로 재가입이 가능한 방식입니다. 그누보드 5.2 이하 버전에서는 소셜 로그인 및 프로필 이미지 관련 코드를 제외하고 사용하십시오.

  1. 새 PHP 파일을 생성하고 아래 코드를 입력합니다.
<?php
include_once('./_common.php');
$login_date = date('Y-m-d H:i:s', strtotime(G5_TIME_YMDHIS. ' -1 years'));
$sql_login = " select mb_id, mb_today_login 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']."<br>";
 /*
 // 회원 삭제
 sql_query(" delete from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ");
 // 포인트 테이블에서 삭제
 sql_query(" delete from {$g5['point_table']} where mb_id = '{$row['mb_id']}' ");
 // 그룹접근가능 삭제
 sql_query(" delete from {$g5['group_member_table']} where mb_id = '{$row['mb_id']}' ");
 // 쪽지 삭제
 sql_query(" delete from {$g5['memo_table']} where me_recv_mb_id = '{$row['mb_id']}' or me_send_mb_id = '{$row['mb_id']}' ");
 // 스크랩 삭제
 sql_query(" delete from {$g5['scrap_table']} where mb_id = '{$row['mb_id']}' ");
 // 관리권한 삭제
 sql_query(" delete from {$g5['auth_table']} where mb_id = '{$row['mb_id']}' ");
 // 그룹관리자인 경우 그룹관리자를 공백으로
 sql_query(" update {$g5['group_table']} set gr_admin = '' where gr_admin = '{$row['mb_id']}' ");
 // 게시판관리자인 경우 게시판관리자를 공백으로
 sql_query(" update {$g5['board_table']} set bo_admin = '' where bo_admin = '{$row['mb_id']}' ");
 //소셜로그인에서 삭제 또는 해제
 if(function_exists('social_member_link_delete')){
 social_member_link_delete($row['mb_id']);
 }
 // 아이콘 삭제
 @unlink(G5_DATA_PATH.'/member/'.substr($row['mb_id'],0,2).'/'.$row['mb_id'].'.gif');
 // 프로필 이미지 삭제
 @unlink(G5_DATA_PATH.'/member_image/'.substr($row['mb_id'],0,2).'/'.$row['mb_id'].'.gif');
 */
}
?>
  1. 파일을 업로드 후 실행하여 대상 목록이 바르게 출력되는지 확인합니다.
  2. 목록이 맞다면 /*와 */ 두 군데 주석 기호만 삭제하고 새로고침하여 즉시 완전 삭제를 수행합니다.

그누보드 회원 삭제 방식의 차이

그누보드에서 휴면 회원을 정리할 때 사용하는 기본 회원 삭제 함수 방식과 아이디까지 완전히 지우는 방식은 데이터 보관 범위와 재가입 허용 여부에서 차이가 있습니다.

1. 그누보드 기본 회원 삭제 함수 방식 (member_delete())

  • 특징: 회원 정보는 삭제되지만 회원 아이디는 데이터베이스에 그대로 남습니다.
  • 재가입 여부: 기존 아이디로 재가입할 수 없습니다.
  • 목록 유지: 회원 목록에서도 아이디가 없어지지 않고 그대로 남습니다.
  • 근거:,,

2. 회원 아이디까지 완전히 삭제하는 방식

  • 특징: 회원 테이블({$g5['member_table']})뿐만 아니라 연관 테이블(포인트, 그룹접근가능, 쪽지, 스크랩, 관리권한, 소셜로그인 연결 등)과 아이콘, 프로필 이미지 파일까지 직접 삭제합니다.
  • 재가입 여부: 회원 목록에서도 보이지 않게 완전히 삭제되므로, 삭제한 아이디로 재가입이 가능합니다.
  • 근거:,

대용량 회원 데이터 일괄 삭제 시 서버 부하 방지

대량의 휴면 회원을 한꺼번에 삭제하면 서버 부하가 발생할 수 있습니다. 이를 방지하기 위한 요령은 다음과 같습니다.

1. 처리량 조절

  • 기간 설정 변경: 스크립트 내 $login_date 설정의 기간(-1 years 등)을 좁게 설정하여 한 번에 처리하는 회원 수를 줄이십시오. 2년 기준은 -2 years, 월 단위는 -12 months로 수정 가능합니다.
  • 순차적 실행: 기간을 나누어 여러 번에 걸쳐 삭제를 진행하십시오.

2. 실행 절차

  • 위 [Q1]의 스크립트 작성 및 실행 방법을 동일하게 적용하되, 기간 설정 값을 조절하여 대상 목록을 먼저 출력하고 확인한 뒤 삭제를 진행하십시오.
  • 작업 전 반드시 데이터베이스(DB)를 백업하십시오.

상황별 판단 가이드

  • 내 상황: 대량의 휴면 회원을 일괄 정리해야 하지만 서버 부하가 걱정되는 경우
    • 선택 기준: 기간 설정 값(-1 years 등)을 조절하여 처리량을 줄이고 순차적으로 실행
    • 다음 행동: DB 백업 후 스크립트의 기간을 좁게 설정하여 대상 목록을 먼저 출력하고 순차 삭제 수행
  • 내 상황: 퇴사자나 탈퇴 회원의 아이디 중복 가입을 허용하기 위해 완전히 지워야 하는 경우
    • 선택 기준: 회원 테이블뿐만 아니라 연관 테이블 및 파일까지 모두 삭제하는 완전 삭제 쿼리 스크립트 적용
    • 다음 행동: 스크립트 실행 후 대상 목록 확인 후 전체 주석을 해제하여 즉시 삭제 실행

실전 FAQ

  • Q. 삭제 대상 회원을 조회할 때 기간은 어떻게 변경하나요?
    • 스크립트 내 $login_date 설정 부분에서 2년 기준은 -2 years, 월 단위는 -12 months 등으로 수정하여 범위를 조절할 수 있습니다.
  • Q. 스크립트 실행 시 서버에 부하가 걸리거나 멈추는 경우 어떻게 해야 하나요?
    • 처리할 데이터 양이 너무 많을 때 발생할 수 있으므로, 기간을 짧게 설정하여 처리량을 줄인 뒤 순차적으로 나눠서 삭제해야 합니다.
  • Q. 그누보드 버전별로 주의할 점이 있나요?
    • 원본 기준 그누보드 5.2 이하 버전에서는 소셜 로그인과 프로필 이미지 관련 코드가 포함되어 있지 않거나 다를 수 있으므로 해당 코드는 제외하고 사용해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.