메뉴 건너뛰기

Karma's Place

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

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

조회 수 50098 추천 수 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

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

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

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

     


  1. Kibana : 새로운 헬게이트가 열리다

    Date2018.12.27 Category서버 인터넷 Views263
    Read More
  2. apache와 nobody

    Date2018.12.25 Category기타등등 Views747
    Read More
  3. LetsEncrypt

    Date2018.12.25 Category기타등등 Views215
    Read More
  4. 아마추어의 서버운영

    Date2018.12.22 Category기타등등 Views174
    Read More
  5. 빌어먹을 X국놈들...

    Date2016.06.02 Category기타등등 Views148
    Read More
  6. 스마트폰과 모바일인터넷

    Date2011.05.16 Category기타등등 Views9877
    Read More
  7. 다시 전자우편을 만지작거리면서...

    Date2003.09.29 Category기타등등 Views3043
    Read More
  8. 인기검색어 출력 위젯 수정법

    Date2014.04.03 CategoryRhymix & XE Views468
    Read More
  9. ISX(통합검색 확장모듈) 사용 설명서

    Date2014.04.03 CategoryRhymix & XE Views420
    Read More
  10. 비회원에게 다른 메뉴보이게하기

    Date2012.03.15 CategoryRhymix & XE Views21938
    Read More
  11. 이미지프로세스 모듈의 설정 및 사용방법(new version)

    Date2012.02.08 CategoryRhymix & XE Views15847
    Read More
  12. 이미지 포맷 변환테스트

    Date2012.02.01 CategoryRhymix & XE Views19587
    Read More
  13. 모바일에서의 통합검색기능

    Date2011.05.17 CategoryRhymix & XE Views21281
    Read More
  14. malware에 의한 해킹 사이트 대처 순서

    Date2011.04.01 Category기타등등 Views24043
    Read More
  15. reCaptcha를 이용한 새로운 캡차애드온

    Date2011.04.01 CategoryRhymix & XE Views21873
    Read More
  16. 초간단 애드온 제작법

    Date2011.03.25 Category애드온 및 모듈 제작 Views32497
    Read More
  17. XE 속도 개선을 위한 위젯 수정법

    Date2011.03.15 CategoryRhymix & XE Views50098
    Read More
  18. 한국우편번호 확장모듈

    Date2011.03.10 CategoryRhymix & XE Views23710
    Read More
  19. 윈도우즈에서 ImageMgick을 이용한 imageprocess 사용

    Date2011.03.10 Category기타등등 Views24094
    Read More
  20. 모듈제작강좌 2 : Hellow World

    Date2011.01.15 Category애드온 및 모듈 제작 Views6980
    Read More
계속 검색
Board Pagination Prev 1 2 3 Next
/ 3
위로