Extra Form
PHP PHP 7.3
CMS Rhymix 2.x

안녕하세요.

 

라이믹스로 개발좀 하다가 궁금한점이 생겨서 질문을 남기게 되었습니다.

 

요약

 

1. 슈퍼캐시 모듈을 설치해서 잠깐 사용 후 슈퍼캐시 모듈을 삭제 (파일만 삭제 하면된다 하였습니다.)

 

2. 회원가입 후 써드파티 모듈에서 권한 조정을 하는대 (DB에는 잘 적용되고 확인하였습니다.)

 

3. 그런데 캐시파일 재생성을 해야 해당 모듈이나 페이지에서 적용이 됩니다. 그 전까지는 권한 관련 로직에서 걸러지는거 같습니다.

 

슈퍼캐시 모듈의 찌꺼기가 남아서 일까요? 동일한 복제 사이트중 슈퍼캐시를 일체 설치 하지 않은 사이트는 이런 증상이 없습니다.

 

  • profile
    파일을 지우셨다면 수퍼캐시는 작동 하지 않을듯한데요.
    다른 문제 같아 보입니다
  • profile

    시스템 설정 -> 고급 설정 메뉴에서 캐시 방법이 무엇으로 선택되어 있나요? 슈퍼캐시를 사용하셨다면 여기서 뭔가 선택되어 있을 가능성이 있습니다. 만약 "파일"이라면 "사용하지 않음"으로 바꾸시고, 그 밖의 것이 선택되어 있더라도 "사용하지 않음"으로 바꾸면 문제가 해결될 가능성이 있지만... 아래 문단을 참고하세요.

    라이믹스는 설치 직후 어떤 캐시든 최소 한 가지를 사용하도록 설정되어 있는 것이 기본값입니다. 이 상태에서 권한 조정이 제대로 되지 않는 서드파티 자료라면 그 서드파티 자료가 잘못 만들어진 것입니다. 코어를 비롯하여 정상적인 자료라면 캐시 사용 여부와 무관하게 모든 설정 변경이 즉시 반영됩니다.

  • ?

    라이믹스는 회원정보를 캐싱처리할겁니다
    그런데 보통 서드파티모듈에는 회원정보를 강제 변경 후 캐시를 안 날리죠.

    해당 서드파티모듈 수정해서 회원정보 수정되면 해당 회원의 회원정보 캐시를 제거하도록 소스를 추가하시면 될겁니다 (소스는 라이믹스 회원모듈을 참고하시면 될거예요)

  • ?
    혹시나 이 문제로 고민하실까봐 해결방안 올립니다.

    member.controller.php 에

    public static function clearMemberCache($member_srl)
    {
    $member_srl = intval($member_srl);
    Rhymix\Framework\Cache::delete("member:member_info:$member_srl");
    Rhymix\Framework\Cache::delete("member:member_groups:$member_srl");
    Rhymix\Framework\Cache::delete("site_and_module:accessible_modules:$member_srl");
    unset($GLOBALS['__member_info__'][$member_srl]);
    unset($GLOBALS['__member_groups__'][$member_srl]);
    }

    이 있습니다.

    self::clearMemberCache($logged_info->member_srl); 등 형태로 사용하세요.