사이트를 운영하는 운영자이지만.. 언제나 글시작하는건 어렵습니다.

 

안녕!하세요.. (장난꾸러기)같은 람보입니다. 

 

사실 프로파일러 모듈을 제가 리더로써 이끌어왓지만.. 사실 요즘은 맴버님들이 다 바쁘셔서 손 놓고 있었습니다..(흑흑..)

 

글제목이 우리 애기가 아파요이라고 지었는데.. 사실 이렇게 지었던 이유는 프로파일러가 큰 결함이 있었기 때문이지요.

 

사용하지 않는 트리거를 찾아내 지워주고 사이트 전반적인 속도를 안정적으로 돌아가게 하는 역활로 만들어진 기능이 사실.. 이즈야님의 계략(?)에 빠져 작동을 하지 않았기 때문이지요.. (푸훗.. 웃고 넘기십시오 ㅋㄷ 농담이니ㅋㅋ)

 

https://github.com/xpressengine/xe-module-profiler/issues/32

 

해당 관련 이슈입니다. 기존에는 $oModuleModel->getTriggers() 의 함수으로도 모든 트리거의 리스트를 불러왔지만..

트리거 관련 호출시간을 조금이라도 단축 해보자는 취지로 뭔가 코드가 바뀌었습니다.

 

https://github.com/xpressengine/xe-core/commit/a38d7703fdf337c09515d30e93ae75f535970923

 

원래의 우리가 바라던 기대치의 값은

 

$trigger_list = $oModuleModel->getTriggers();

 

이라고 정의 해둔다음

 

for어쩌구반복문($trigger_list as $trigger)

 

형태로 array를 반복 시키는 값을 기대 했엇죠.. 하지만 현재 코어에서 받아온값은 NULL.. 

뭔일인가 직접 module.model.php 파일을 찾아볼 수 박에 없었죠..

거기에서 직접 디버그를 찍어보니.. 나온값이... 참..특이함..

 

array값이 "한가지"가 아니라 "여러가지"array가 생성되었다는..

 

그러니깐.. 보통 우리가 바라는 값들을 정렬해보면..

 

array

(

[1] -> ㅁㄴㅇㅁㄴㅇ

[2] -> 123123

)

끝이라고 생각했더라면.. 이건.. 하나의 함수에 들어간게..

 

array

(

[1] -> ㅁㄴㅇㅁㄴㅇ

[2] -> 123123

)

array

(

[1] -> ㅁㄴㅇㅁㄴㅇ

[2] -> 123123

[3] -> ㅁㄴㅇㅁㅈㄷ

[4] -> ㅁㅇㄴㄻㄴㄷ

)

array

(

[1] -> ㅁㄴㅇㅁㄴㅇ

[2] -> 123123

[3] -> ㅁㄴㅇㅁㅈㄷ

)

요런형태로 하나가 잡히는게 아닌가...(뭐지.. 이 아이러니한..상황은..)

 

전체적인 코드를 보니.. 디비속의 트리거를 검사하지않고 캐쉬파일을 이용해서 트리거존재여부를 따지는 것 같던데.. 그로인해 속도를 조금 높힌듯 해보였습니다..(디비를 검사하지 않고 넘어가니깐..)

 

아무튼.. 해당 방식이 디비를 사용하는 방식으로 정보를 가져와야 하다보니.. 프로파일러 트리거 목록 부분이 전혀나타나지 않던 버그가 있엇던거죠..

 

그래서 오랜만에.. 프로파일러를 긴급 엑스레이(?) 검사를 하였습니다..(이거 알아들으시는분 최소 용팔이 보신분?)

 

기존에 모듈 model의 함수를 그대로 옮겨 심었습니다.. 그리고 프로파일러 내에서 작동되게 했더니.. 정상적으로 작동!!

 

(아 물론 삭제 부분도 동일하게 바뀐부분이 있어.. 기존의 삭제하는 함수도 기존의 함수를 그대로..가져와 구현했어요.)

 

https://github.com/xpressengine/xe-module-profiler/commit/4fe979edda986552375a5cb64a17bfc73e548b9c

 

해결방법 커밋한 것입니다..

 

혹시 사용하시는분들은 보시고 참고하시길 !!

 

 

람보

profile
람보입니다.
  • ?
    내용이 어려워서 이해는 못했지만.... 잘 해결됬다니 다행입니다 ㅎ
  • profile
    애기가 나았군요!?;
  • ?
    Core 코드가 바뀌면 이런 문제가 종종 생기죠 ㅠㅋㅋ
    고생하셨어요!!
  • profile
    이 환자에게 긴급 엑스레이를 찍어야 돼...ㅋㅋ
  • profile profile
    아니 수술.. 아니 긴급엑스레이.. 아니 수술.. 아니 긴급엑스레이입니다.
  • profile profile
    ㅋㅋ 아.. 그 대사죠..ㅋㅋ
  • profile

    용도에 맞지않는 함수를 쓰니까 이런 불상사가 생기는 거죠..

    사실 getTriggers 이 아이는 전체 트리거 목록을 불러오는 함수가 아닙니다. 제시한 트리거 이름에 해당하는 특정 트리거를 불러오는 함수입니다. 그간 getTriggerList(현재없음) 함수를 따로 만들지않고, 꼼수(?)로 getTriggers 이 아가를 전체 트리거를 불러오는 데 사용한 건데... 이제는 막혔죠..ㅠ

    태그나 함수나 제발 용도에 맞게 사용합시다..ㅠ (그렇게 말했지만, 사실 저도 제대로 못해요..ㅠ;; 그냥 꼼수쓰는 게 편하죠.. 막히면 수정하면 된다는 낙관적인 "나는야 꼼수인!!")

  • profile profile
    흐.. 프로파일러 팀 당시.. 트리거의목록을 가져오는 방법으로 모듈모델의 해당 함수를사용하자 결정하고 해당함수를 이용해서 만들어왔는데 사라짐..;ㅁ;...