질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

이 있을까요?

 

 

UPDATE rx_documents SET module_srl = %s WHERE document_srl = %s

UPDATE rx_comments SET module_srl = %s WHERE document_srl = %s

 

위 쿼리문을 이용하여 게시글의 위치를 수동으로 이동하고 있습니다.

 

하지만 썸네일이 있는? 사진이 첨부된 게시글의 경우 이렇게 이동하면 무한루프에 빠져 접속이 불가능한 문제가 생겼으나 캐시파일을 재생성 하면 해결되는 것을 발견했습니다.

 

그런데 이렇게 게시글을 옮길때마다 모든 캐시파일을 재생성 할 수는 없지 않습니까?

 

그래서 임시방편으로

 

<?php
require dirname(__FILE__) . '/common/autoload.php';
DocumentController::clearDocumentCache($_GET['srl']);

 

이런 php 스크립트를 만들어서 외부 APP에서 게시글을 옮길때마다 실행되도록 하고 있는데... 방법이 썩 마음에 들지가 않습니다.

 

 

rhymix의 files 디렉토리나 db에서 어떤 게시글의 대한 캐시파일 위치를 담고 있는 부분이 있을까요?

 

그 부분만 외부 APP에서 읽어와서 해당 캐시파일을 직접 삭제토록 하면 좋을텐데 말이죠.....

  • profile

    clearDocumentCache 를 사용한다는건 일반적으로 디렉토리 형태의 캐시가 아니라 내부 라이믹스에서 사용하는 캐시형태를 쓴다는것인데 이때는 document 의 캐시형태를 보시면 될것 같습니다.

    document에서 어떻게 캐시를 생성하는지 잘 보시면 될것 같아요.

     

    https://github.com/rhymix/rhymix/blob/master/modules/document/document.controller.php#L3147

     

    근데 수동으로 직접 쿼리를 하는환경에서는 PHP를 실행시키는게 아니라서 좀 애매한것 같은데 PHP에서 하는거라면 해당 쿼리를 돌리면서 document_srl 을 가져오신다음 해당 메소드를 실행시키면 될 것 같아요

     

  • profile ?
    몸이 피곤해서 찾아볼 엄두가 나지 않네요.. 내일 찾아봐야겠습니다 답변 감사드립니다
  • profile

    쿼리를 실행하는 앱은 어떤 언어로 구현된 것인가요?

    Memcached나 Redis처럼 많은 언어에서 쉽게 연동할 수 있는 캐시 방식을 선택하셨다면

    라이믹스와 동일한 키값을 지워주도록 구현할 수 있을 것 같습니다.

  • profile ?

    파이썬3.8입니다.
    게시글의 캐시나 그 위치를 담고있는 값은 files/cache 디렉토리나 db에 저장되는 것이 아닌가요?
    에구.. 말씀을 들어보니 많이 복잡해질것같네요

  • ? profile

    반복적인 DB 쿼리를 줄이기 위해 캐시를 사용하는 건데, 캐시를 DB에 저장할 리가 없지요.

    템플릿처럼 반드시 파일로 남겨야 하는 정보가 아니라면 files/cache에 저장하지 않습니다. 대부분의 캐시 데이터는 시스템 설정 > 고급 설정 메뉴에서 선택한 캐시 방식에 따라 APC, Memcached, Redis 등 RAM을 주로 사용하는 저장소에 저장됩니다. RAM은 디스크보다 수십 배 빠르니까요.

     

    APC는 PHP 전용이므로 파이썬에서 접근할 수 없지만, Memcached나 Redis는 다른 언어에서도 쉽게 접근하여 특정한 키값을 삭제할 수 있습니다. 심지어 다른 서버에서도 접근이 가능하도록 설정할 수 있으니, 파일 경로를 일일이 찾는 것보다 오히려 호환성이 더 좋습니다.

     

    결론: 해당 정보가 저장되어 있는 파일이나 DB는 없습니다. 너무 복잡하면 그냥 PHP를 호출하세요.^^

  • profile ?

    캐싱에 외부 솔루션을 이용하는지 몰랐습니다.
    파이썬으로 굳이 만들어보려고 한다면 최소 50줄은 넘어가겠죠??
    그냥 php를 호출해야겠군요. ㅜㅜ

    항상 좋은 프로그램 만들어 주시고 이렇게 밤이 깊었는데도 친절히 알려주셔서 감사드립니다.

    좋은 답변 버튼이 정회원이 아니라고 눌리지가 않네요,,