메뉴 건너뛰기

Karma's Place

로그인하지 않고 댓글을 달 수 있습니다. 하지만 본사이트의 취지에 맞지않는 댓글은 예고없이 삭제될 수 있습니다.
Rhymix & XE
2011.03.15 13:08

XE 속도 개선을 위한 위젯 수정법

조회 수 50095 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
최근 XE의 속도문제가 자주 거론되고 있습니다.

BackupXE 작업을 하면서 몇가지 확인한 것이 있는데 그중 첫번째가 메모리입니다.
XE가 구동하는데 메모리를 많이 소모합니다.
따라서 서버의 자원이 넉넉하고 동접자숫자가 많지 않은 사이트는 속도가 느리다는 느낌이 별로 없습니다.
하지만 동접자 숫자가 많아지고 메모리압박이 가해지면 속도는 현저히 떨어지게 됩니다.

두번째도 결국 같은 맥락이지만 executeQuery() 문제입니다.
XE는 여러가지의 DBMS를 지원하고 있습니다.
이 여러가지의 DB를 지원하기 위해서 쿼리때 낭비되는 리소스가 생길 수 밖에 없습니다.
물론 다른 속도빠른 CMS처럼 달랑 Mysql만 지원하는 구조로 바뀐다면 당근 속도도 빨라질겁니다.
하지만 이런 구조변경은 간단한 작업이 아닙니다.

사용자 입장에서 보면 여러개의 DB를 지원한다고 해도 실제 사용하는 DB는 한가지입니다.
결국 자신이 사용하는 DB에 최적화된 위젯을 만든다면 속도는 현저히 빨라지게 될겁니다.
따라서 가장 많은 사용자들이 사용하고 있는 Mysql을 기준으로 위젯수정법을 알려드리겠습니다.

미리 말씀드리지만 이렇게 수정된 위젯은 다른 DB를 사용하는 사이트에서는 작동하지 않습니다.
따라서 범용 위젯으로 배포하는데도 한계가 있을 수밖에 없습니다.

우선 가장 간단하면서도 가장 많이 사용하는 문서출력위젯입니다.
최근글 위젯을 다운받아서 설치합니다. 아마도 대개는 다운받지 않아도 이미 설치되어있을 가능성이 높아보입니다만... 좌우간...
http://www.xpressengine.com/index.php?mid=download&package_srl=18324344

./widgets/newest_document/newest_document.class.php만 수정하면 됩니다.

원본의 코드는 다음과 같습니다.
 $output = executeQueryArray('widgets.newest_document.getNewestDocuments', $obj);

// document 모듈의 model 객체를 받아서 결과를 객체화 시킴
$oDocumentModel = &getModel('document');

// 오류가 생기면 그냥 무시
if(!$output->toBool()) return;

// 결과가 있으면 각 문서 객체화를 시킴
$modules = array();
if(count($output->data)) {
foreach($output->data as $key => $attribute) {
.
.
이하생략

위의 코드를 다음과 같이 수정합니다.

 /*
$output = executeQueryArray('widgets.newest_document.getNewestDocuments', $obj);
*/
//여기부터 Mysql 전용코드
$oDB=&DB::getInstance();
$sql = sprintf("select modules.site_srl as `site_srl`,modules.mid as `mid`,documents.* from `%smodules` as modules,`%sdocuments` as documents where (documents.module_srl in (%s) and modules.module_srl = documents.module_srl) order by %s %s limit 0, %s",$oDB->prefix, $oDB->prefix,$args->module_srls,$obj->sort_index,$obj->order_type,$obj->list_count);

$result = $oDB->_query($sql);
$output = $oDB->_fetch($result);
//이하 $output->data 구문을 $output으로 수정
// 여기까지 추가...

// document 모듈의 model 객체를 받아서 결과를 객체화 시킴
$oDocumentModel = &getModel('document');

// 오류가 생기면 그냥 무시
//if(!$output->toBool()) return; //이건 삭제...

// 결과가 있으면 각 문서 객체화를 시킴
$modules = array();
if(count($output)) { //$output->data를 $output으로
foreach($output as $key => $attribute) { //$output->data를 $output으로
.
.
이하생략



다시 정리를 하자면 
$output = executeQueryArray('widgets.newest_document.getNewestDocuments', $obj);
로 데이터를 가져오는  부분은
sql문을 직접 입력해서 $oDB->_query() 로 가져오게 수정하는 것입니다.
따라서 $output->toBool() 부분을 삭제 또는 주석처리해야하고
후에 데이터를 처리하는 부분에서 $output->data를 $output 으로 수정해줘야합니다.

나머지 스킨과 기타 기능은 기존과 동일한  방법으로 사용하시면 됩니다.

다른 위젯들도 수정방법은 동일합니다.
다만 sql을 직접 용도에 맞게 넣어줘야하는 숙제는 각자의 몫으로 남겨둡니다.

?
  • ?
    blogschool 2011.07.06 14:30

    다른 위젯도 쿼리 부분은 모두 동일하게 하는것인가요? ㅎㅎ

    로그인정보 모듈도 대부분의 사이트에서 사용할텐데..

    최적화 하는 방법을 알려주시면 감사하겟습니다.

     


List of Articles
번호 분류 제목 날짜 조회 수
» Rhymix & XE XE 속도 개선을 위한 위젯 수정법 1 2011.03.15 50095
52 Rhymix & XE 이미지프로세스 모듈 (매직버전) 111 file 2010.03.01 46055
51 Rhymix & XE 이미지 자동출력 애드온 58 file 2010.04.09 35612
50 애드온 및 모듈 제작 초간단 애드온 제작법 2 file 2011.03.25 32495
49 기타등등 루씬, 큐브리드그리고 XE 3 file 2010.10.07 30685
48 Rhymix & XE 구글 웹앨범 연동모듈 설정 58 file 2010.03.31 30268
47 Rhymix & XE JPG 축소 및 워터마크 애드온 ver 0.7 21 file 2010.02.18 27116
46 기타등등 큐브리드 변환후 index 재설정 2 file 2010.10.22 26555
45 기타등등 윈도우즈에서 ImageMgick을 이용한 imageprocess 사용 2 file 2011.03.10 24086
44 기타등등 malware에 의한 해킹 사이트 대처 순서 2011.04.01 24039
43 Rhymix & XE 한국우편번호 확장모듈 file 2011.03.10 23703
42 Rhymix & XE picasa_upload component 34 file 2010.04.05 23208
41 Rhymix & XE 자동 그룹변경 애드온 17 file 2010.02.18 22531
40 Rhymix & XE 구글 웹앨범 최근사진 위젯 file 2010.04.05 22345
39 Rhymix & XE 비회원에게 다른 메뉴보이게하기 2012.03.15 21932
38 Rhymix & XE reCaptcha를 이용한 새로운 캡차애드온 file 2011.04.01 21867
37 Rhymix & XE 모바일에서의 통합검색기능 6 file 2011.05.17 21280
36 Rhymix & XE 이미지 포맷 변환테스트 27 file 2012.02.01 19582
35 Rhymix & XE 이미지프로세스 모듈 설정방법 24 file 2010.02.25 19332
34 Rhymix & XE 이미지프로세스 모듈의 설정 및 사용방법(new version) file 2012.02.08 15843
계속 검색
Board Pagination Prev 1 2 3 Next
/ 3
위로