Q&A

CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.2

별도로 제작된 모듈과 엑셀양식으로 이미 생성된 문서(번호)들 본문에 아래와 같은 이미지 경로 소스를 자동입력하고 있습니다.

 

본문 입력 내용 예: <p><img src="https://domain.com/product/8801166099028.jpg" /></p>

 

본문의 이미지 경로가 바뀌는 경우 게시판 스킨 목록의 썸네일은 이전 이미지 경로에서 생성된 썸네일을 보여주고 있어서 자동으로 갱신을 할 수 있는 방법을 찾고 있습니다.

 

디비에서 직접 해당 되는 문서들의 썸네일만 일괄 삭제하거나 아니면 해당 되는 문서들의 썸네일 삭제 후 재 생성하는 방법을 찾고 있는데요. 쳇gpt나 클로드등에서 제시하는 방법들이 제대로 해결이 되질 않아 혹시 아시는 분 계시면 도움 요청드립니다.

 

1. 디비에서 직접 썸네일 정보 초기화 하는 방법

 

-- 해당 문서들의 썸네일 정보 초기화

UPDATE rx_documents SET thumbnail_file = NULL WHERE document_srl IN (12345, 67890, ...);

 

-- 또는 전체 모듈의 썸네일 초기화

UPDATE rx_documents SET thumbnail_file = NULL WHERE module_srl = '모듈번호';

 

--> 해당 하는 컬럼들이 보이질 않는데 해당 되는 문서들의 썸네일을 삭제하는 update 문구가 어떻게 되는지 아시는분 계시면 도움 부탁드립니다.

 

2. 썸네일 삭제 후 재생성해주는 php 스크립트

--> 답변을 주는 여러 스크립트들을 실행하면 여러 유형의 에러들을 발생하고 재질문과 답변을 반복할 수록 미궁에 빠져버립니다.

예시인데요. 혹시 도움을 좀 받을 수 있을까요?

 

<?php
require_once(__DIR__ . '/common/autoload.php');  

$oDocumentModel = getModel('document');
$oDocumentController = getController('document');

// 갱신할 문서 번호 배열
$doc_srls = [12345, 67890, /* 더 많은 문서번호 추가 */];

$batch_size = 100; // 한 번에 처리할 문서 수

// 문서 번호 배열을 100개 단위로 분할
$batches = array_chunk($doc_srls, $batch_size);

foreach ($batches as $batch_index => $batch) {
    echo "=== Processing batch " . ($batch_index+1) . " ===\n";

    foreach ($batch as $doc_srl) {
        $oDocument = $oDocumentModel->getDocument($doc_srl, false, false);
        if(!$oDocument->isExists()) continue;

        $args = new stdClass();
        $args->document_srl = $doc_srl;
        $args->title = $oDocument->getTitleText();
        $args->content = $oDocument->getContent(false); // 기존 내용 그대로
        $args->module_srl = $oDocument->get('module_srl');

        // updateDocument 실행 → 썸네일 갱신
        $oDocumentController->updateDocument($args, true);

        echo "Document {$doc_srl} updated\n";
    }

    // 선택적으로 브라우저/서버 과부하 방지를 위해 잠깐 쉬기
    // sleep(1);
}

echo "✅ All batches completed!\n";
 

마트몬 Lv. 8

댓글 1

  • 2시간 전 #1918159

    정상적으로 updateDocument() 했다면 썸네일은 자동으로 갱신됩니다.

    https://github.com/rhymix/rhymix/blob/2.1.27/modules/document/document.controller.php#L1392-L1393

     

    정확히 말하면 해당 문서의 썸네일 폴더를 통째로 삭제해서, 다음에 썸네일을 요청할 때 자연스럽게 다시 생성되도록 하는 방식입니다. 썸네일 정보는 DB에 저장되지 않고, 정해진 경로에 파일이 있느냐 없느냐로 판단하기 때문입니다.

     

    만약 썸네일 파일을 삭제하고 다시 생성했는데도 예전 이미지가 보인다면 서버나 브라우저의 캐시 문제일 수도 있습니다.