2026, 새로운 도약을 시작합니다.

그누보드5 디비 g5_uniqid 2일전 데이터 자동삭제

g5_uniqid 가 엄청 쌓여서 extend 폴더에 업로드 해서, 자동으로 삭제되도록 만들었습니다.

extend 폴더에 uniqid_cleanup.extend.php 을 생성해서 아래 내용을 저장 업로드 합니다

g5_uniqid 에는 영카트 쇼핑몰에서 장바구니, 주문하기 등에서 사용된다고 합니다.

<?php
// extend/uniqid_cleanup.extend.php
// ────────────────────────────────────────
// g5_uniqid 자동정리 + 테이블 최적화 + 로그 크기 제한
// - 상품이 없을 때: 2일 이전 삭제
// - 상품이 있을 때: 30일 이전 삭제
// ver.2025.11.06-final-const (PHP 5.4~8.x 호환)
// ────────────────────────────────────────
if (!defined('_GNUBOARD_')) exit;

// ─────────────────────────────
// 설정 상수 (필요 시만 수정)
// ─────────────────────────────
define('UNIQID_CLEANUP_DAYS_NOITEM', 2);   // 상품이 없을 때 삭제 기준 (일)
define('UNIQID_CLEANUP_DAYS_HASITEM', 30); // 상품이 있을 때 삭제 기준 (일)
define('UNIQID_CLEANUP_LOG_MAXSIZE', 1048576); // 로그 최대 크기 1MB

// 디렉토리 보장
@mkdir(G5_DATA_PATH . '/cache', G5_DIR_PERMISSION, true);
@mkdir(G5_DATA_PATH . '/log', G5_DIR_PERMISSION, true);

// 하루 1회만 실행되도록 캐시파일 이용
$uniqid_cleanup_flag_file = G5_DATA_PATH . '/cache/uniqid_cleanup.flag';
$uniqid_cleanup_today = date('Y-m-d');

// 오늘 이미 실행했는지 확인
if (!file_exists($uniqid_cleanup_flag_file) || trim(@file_get_contents($uniqid_cleanup_flag_file)) !== $uniqid_cleanup_today) {

    // 실행 날짜 기록
    @file_put_contents($uniqid_cleanup_flag_file, $uniqid_cleanup_today);

    // 테이블명 결정
    $uniqid_cleanup_table = isset($g5['uniqid_table']) ? $g5['uniqid_table'] : G5_TABLE_PREFIX.'uniqid';

    // 쇼핑몰 상품 존재 여부 확인
    $uniqid_cleanup_shop_item_table = isset($g5['g5_shop_item_table']) ? $g5['g5_shop_item_table'] : G5_TABLE_PREFIX.'shop_item';
    $uniqid_cleanup_item_count = (int)sql_fetch_value("SELECT COUNT(*) FROM `{$uniqid_cleanup_shop_item_table}`");

    // 상품 개수에 따라 삭제 기준 일수 설정
    $uniqid_cleanup_days = ($uniqid_cleanup_item_count > 0) ? UNIQID_CLEANUP_DAYS_HASITEM : UNIQID_CLEANUP_DAYS_NOITEM;
    $uniqid_cleanup_expire_id = (int)date('Ymd00000000', strtotime("-{$uniqid_cleanup_days} days"));

    // ─────────────────────────────
    // 1. 기간 경과 데이터 삭제
    // ─────────────────────────────
    $uniqid_cleanup_del_sql = "DELETE FROM `{$uniqid_cleanup_table}` WHERE `uq_id` < {$uniqid_cleanup_expire_id}";
    sql_query($uniqid_cleanup_del_sql, false);

    // ─────────────────────────────
    // 2. 테이블 최적화 (공간회수)
    // ─────────────────────────────
    $uniqid_cleanup_opt_sql = "OPTIMIZE TABLE `{$uniqid_cleanup_table}`";
    sql_query($uniqid_cleanup_opt_sql, false);

    // ─────────────────────────────
    // 3. 로그 기록 (1MB 초과 시 초기화)
    // ─────────────────────────────
    $uniqid_cleanup_log_path = G5_DATA_PATH . '/log/uniqid_cleanup.log';

    if (file_exists($uniqid_cleanup_log_path) && filesize($uniqid_cleanup_log_path) > UNIQID_CLEANUP_LOG_MAXSIZE) {
        @unlink($uniqid_cleanup_log_path);
        @file_put_contents($uniqid_cleanup_log_path, "[".date('Y-m-d H:i:s')."] log reset (size > 1MB)\n");
    }

    // 로그 작성
    $uniqid_cleanup_msg = sprintf("[%s] cleanup done — deleted uq_id < %s (%d days old), optimized table: %s, shop items: %d\n",
        date('Y-m-d H:i:s'), $uniqid_cleanup_expire_id, $uniqid_cleanup_days, $uniqid_cleanup_table, $uniqid_cleanup_item_count);

    @file_put_contents($uniqid_cleanup_log_path, $uniqid_cleanup_msg, FILE_APPEND);
}

|

댓글 7개

uniqid 테이블을 확인해 본 적이 없어서 뭐가 쌓이고 있는지는 모르겠지만 추후에 필요한 정보일 수도 있겠네요!!

감사 합니다.

신고가 접수되어 자동으로 블라인드 된 댓글입니다. 원문을 보시려면 를 클릭하세요.

감사합니다 ^^

감사합니다.

감사합니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,592
2741 어제 조회 76
2740 3일 전 조회 82
2739 1주 전 조회 194
2738 1주 전 조회 200
2737 1주 전 조회 169
2736 1주 전 조회 268
2735 2주 전 조회 273
2734 3주 전 조회 255
2733 1개월 전 조회 257
2732 1개월 전 조회 293
2731 1개월 전 조회 260
2730 1개월 전 조회 217
2729 1개월 전 조회 343
2728 1개월 전 조회 238
2727 1개월 전 조회 412
2726 1개월 전 조회 248
2725 1개월 전 조회 322
2724 1개월 전 조회 351
2723 1개월 전 조회 259
2722 1개월 전 조회 292
2721 1개월 전 조회 205
2720 2개월 전 조회 298
2719 2개월 전 조회 302
2718 2개월 전 조회 195
2717 2개월 전 조회 328
2716 2개월 전 조회 197
2715 2개월 전 조회 305
2714 2개월 전 조회 266
2713 2개월 전 조회 368
2712 2개월 전 조회 283
🐛 버그신고