26.09.29
0
조회 206
26.09.26
1
조회 162
26.09.24
0
조회 194
26.09.23
0
조회 197
26.09.19
0
조회 516
26.09.11
0
조회 153
26.09.10
0
조회 152
26.09.10
0
조회 151
26.09.10
0
조회 119
26.09.10
0
조회 103
26.09.09
1
조회 106
26.09.04
0
조회 506
26.09.03
0
조회 342
26.09.01
1
조회 140
26.08.29
0
조회 183
26.08.22
0
조회 297
26.08.20
0
조회 327
26.08.13
0
조회 319
26.08.13
0
조회 370
26.08.13
0
조회 213
댓글 11
한 사이트에서 쓸꺼면 그냥 합치는게 낫지 않을까요?
저라면 합칠듯 합니다.
php에서 성능이야 해괴하게 짜지 않거나 기가막힌 알고리즘을 짜지 않는 이상 별 차이 없지 않을까 싶네요
별 차이가 없을것 같긴 하지만요.
XE에서는 controller, model, view (+admin, mobile, api) 정도밖에 구분하지 않기 때문에 이 구조 안에서 많은 기능을 넣으면 파일 하나에 몇천 줄씩 들어가게 됩니다. 파일이 커질수록 현재 페이지와 무관한 코드를 많이 로딩하게 되니 성능이 안 좋아지는 건 당연하고요. 특히 트리거가 들어가는 파일이 커지면 전혀 상관없는 페이지에서도 부담이 커집니다.
코드 복붙을 최소화하고 공통 기능을 별도의 함수로 빼내면 많이 절약이 되지만 이것도 한계가 있고, 결국 어느 시점에선가 파일을 쪼개야 합니다. 그러나 여러 모듈로 쪼갤 필요는 없다고 생각해요. 한 모듈 안에서도 XE에서 기본으로 제공하는 구조 외에 얼마든지 파일을 만들 수 있고, 꼭 필요한 곳에서만 include_once를 사용하거나 spl_autoload_register로 끌어다 쓸 수 있으니까요.
이런 방법으로 많은 파일을 그때그때 불러다 쓰는 예로는 고급 메일 발송 모듈이 있습니다. 트리거가 들어가는 파일은 몇 줄 없지만, 메일을 보내려고 하면 어마어마하게 많은 파일이 쓱~ 인클루드되지요.
https://github.com/kijin/xe-advanced-mailer
클래스 파일의 줄 수 자체의 문제보다도 트리거 실행을 위해 getModule로 모듈의 함수들을 다 끌어와서 인스턴스를 만드는데 이게 속도를 느려지게 할 수 있을 것 같습니다. method_exists도 중복이 되고 있네요.
네, 트리거 실행시 상당히 많은 것이 로딩됩니다. 만약 모듈을 분리하신다면 트리거만 따로 모으는 것도 성능을 개선하는 한 방법이 될 수 있습니다.
아... 그럴 수도 있겠네요. 근데 지금 생각해보니까 아예 트리거 전용 클래스로 가령 document.trigger.php를 만들어놓으면 트리거 불러오는데에 getModuleInstance까지 쓸 필요도 없을 것 같은데...
아니면 그냥 trigger 디렉토리를 따로 파서 그 안에 trigger_name.php 이런 식으로 트리거를 모아놓거나요.
전 이만 의뢰받은 모듈 마저 만들러 가보겠습니다 ㅠㅠ