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

그누보드5 팁자료실

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

그누보드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

// 디렉토리 보장
(G5_DATA_PATH . '/cache', G5_DIR_PERMISSION, true);
(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);
}

추천
9

댓글 7개

신고가 접수된 글입니다.
신고 횟수가 1회 이상이면 글을 확인하지 못합니다.


https://forum.kardiolo.pl/topic/76987-%EF%BD%83%EF%BD%8F%EF%BD%8D%EF%BD%90%EF%BD%8C%EF%BD%85%EF%BD%94%EF%BD%85%E2%84%A2-%EF%BD%8C%EF%BD%89%EF%BD%93%EF%BD%94-%EF%BD%8F%EF%BD%86-%EF%BD%8D%EF%BD%8F%EF%BD%8F%EF%BD%8E%EF%BD%90%EF%BD%81%EF%BD%99%C2%AE-%EF%BD%83%EF%BD%95%EF%BD%93%EF%BD%94%EF%BD%8F%EF%BD%8D%EF%BD%85%EF%BD%92%C2%A9-%EF%BD%93%EF%BD%85%EF%BD%92%EF%BD%96%EF%BD%89%EF%BD%83%EF%BD%85%E2%84%97-%EF%BD%83%EF%BD%8F%EF%BD%8E%EF%BD%94%EF%BD%81%EF%BD%83%EF%BD%94-%EF%BD%8E%EF%BD%95%EF%BD%8D%EF%BD%82%EF%BD%85%EF%BD%92%EF%BD%93-%E2%80%94-%EF%BC%92%EF%BC%94%EF%BC%8F%EF%BC%97-%EF%BD%8C%EF%BD%89%EF%BD%96%EF%BD%85-%EF%BD%90%EF%BD%85%EF%BD%92%EF%BD%93%EF%BD%8F%EF%BD%8E-%EF%BD%81%EF%BD%93%EF%BD%93%EF%BD%89%EF%BD%93%EF%BD%94%EF%BD%81%EF%BD%8E%EF%BD%83%EF%BD%85-%EF%BD%87%EF%BD%95%EF%BD%89%EF%BD%84%EF%BD%85/
https://forum.kardiolo.pl/topic/77002-%EF%BD%86%EF%BD%81%EF%BD%91%E2%80%99%EF%BD%93%E2%84%A2-%EF%BD%8C%EF%BD%89%EF%BD%93%EF%BD%94-%EF%BD%8F%EF%BD%86-%EF%BD%8D%EF%BD%8F%EF%BD%8F%EF%BD%8E%EF%BD%90%EF%BD%81%EF%BD%99%C2%AE-%EF%BD%83%EF%BD%95%EF%BD%93%EF%BD%94%EF%BD%8F%EF%BD%8D%EF%BD%85%EF%BD%92%C2%A9-%EF%BD%93%EF%BD%85%EF%BD%92%EF%BD%96%EF%BD%89%EF%BD%83%EF%BD%85%E2%84%97%EF%BD%83%EF%BD%8F%EF%BD%8E%EF%BD%94%EF%BD%81%EF%BD%83%EF%BD%94-%EF%BD%8E%EF%BD%95%EF%BD%8D%EF%BD%82%EF%BD%85%EF%BD%92%EF%BD%93-%E2%80%94%EF%BC%92%EF%BC%94%EF%BC%8F%EF%BC%97-%EF%BD%8C%EF%BD%89%EF%BD%96%EF%BD%85-%EF%BD%90%EF%BD%85%EF%BD%92%EF%BD%93%EF%BD%8F%EF%BD%8E-%EF%BD%81%EF%BD%93%EF%BD%93%EF%BD%89%EF%BD%93%EF%BD%94%EF%BD%81%EF%BD%8E%EF%BD%83%EF%BD%85-%EF%BD%87%EF%BD%95%EF%BD%89%EF%BD%84%EF%BD%85/
https://rhythmgamingworld.com/forums/topic/ultimate-guide-to-moonpay-customer-service-numbers-in-the-usa/
https://www.glassdoor.com/Community/new-york-city/to-contact-moonpay-customer-support-1-888-355-2348-us-use-the-support-request-form-or-the-247-phone-number-1-888-355-2348-us?__cf_chl_rt_tk=NCCZGamKG6bjNWMf3K4t7.FnjnnbXQS_yTCBZIsc6p8-1762442357-1.0.1.1-0H042jEgwLwY6Nyb0fba4CvuZY6d3KFYAmZCd20LqfM
https://rhythmgamingworld.com/forums/topic/complete-listof-moonpay-customer-service%e2%84%97-24-7-live-person/
https://rhythmgamingworld.com/forums/topic/complete-listof-moonpay-customer-service%e2%84%97-24-7/
https://rhythmgamingworld.com/forums/topic/how-to-moonpaycustomer-service-usa-contact-numbers-moonpayexpands-live/
https://rhythmgamingworld.com/forums/topic/main-list-of-moonpay-support-contact-numbers-in-us/
 

전체 2,742 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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