CI 묻고 답하기

제목 코드이그나이터 메모리 사용량에 관한 질문
글쓴이 피스트 작성시각 2013/01/14 01:44:46
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 20255   RSS
안녕하세요

현재 안드로이드 폰에서 사진과 간단한 정보를 다운받는 용도로 서버에다 코드이그나이터를 설치해서
RESTful API를 제공하는 용도로 쓰고있는데요.(앱에서 도메인 주소를 통해 서버의 사진과 데이터를 요청하여 받아옴)
제가 이해가 부족한 상태에서 구축한터라, 한 클래스에 모든 함수를 몰아넣고 생성자 에서 아래와 같이

public function __construct()
    {
        parent::__construct();
        $this->DB1 = $this->load->database('database_basic', true);
        $this->DB2 = $this->load->database('database_master', true);
        $this->load->model('app_model');
        $this->load->helper('download');
        $this->load->helper('date');
       
    }

모든 모델들을 로드하고 있습니다.
$this->output->enable_profiler(TRUE) 메소드를 이용해서 체크를해보니
앱->서버에서 함수하나를 콜할 경우 약 메모리가 3메가 정도 먹더라구요;(후에 함수에서 필요한 모델만 로드하도록 바꿀 생각입니다)

이럴 경우, 단순계산으로 100명이서 제 앱을 동시에 사용하여 동시 요청할때 100*3= 300메가의 메모리가
사용되는것인지, 메모리상에 올라와있는 3메가를 공유하는 것인지 궁금합니다.







 다음글 업로드 파일명을 배열로 했을 때 (1)
 이전글 or_like 질문입니다. (5)

댓글

한대승(불의회상) / 2013/01/14 09:11:06 / 추천 0
단순계산하시는게 맞습니다.
피스트 / 2013/01/14 13:06:01 / 추천 0
 헐..엄청 잘못짰군요;; 불의회상님 답변 감사드립니다.
그런데 또 질문이 있는데요 코드 이그나이터가 언제 메모리에 올라오나요?

앱에서 http:/mydomain.com/appmain/func1/  이런식으로  코드이그나이터의 함수를 호출할 경우,
그때 그 함수가 속한 클래스가 메모리에 올라오면서 생성자 호출 후 함수가 호출되는 것 같은데
제 추측이 맞나요?

그렇다면 같은 사용자의 앱에서 시간차를 두고 계속 
 http:/mydomain.com/appmain/func1/  
 http:/mydomain.com/appmain/func2/

이런식으로 호출할 경우 메모리 3메가(코드이그나이터가 점유하는 메모리 크기)를 
계속 점유하였다, 해제하였다를 반복하는 것인가요?
제 추측이 맞다면 너무 비효율적인 것 같은데..
RESTful API를 구축하기엔 코드이그나이터가 맞지 않는것인지, 가르침 부탁드립니다 (__)





변종원(웅파) / 2013/01/14 22:13:32 / 추천 0
 어떤 기능을 만드신건지는 모르겠지만 2-3메가가 정상적입니다.

점유했다 해제했다... 이건 어쩔 수 없는 php 특성입니다.

그래서 앱을 만들때 모든 액션을 1:1로 처리하지 않고 가능하면 모아서 처리하거나
초기 로드시 첫번째 페이지에 해당하는 데이터를 모두 받는 등 
기술적(?) 분산이 필요합니다.
이현석 / 2013/01/14 23:41:06 / 추천 0
덕분에 찾아보니 CodeIgniter Rest Server 라는게 있네요.
https://github.com/philsturgeon/codeigniter-restserver

피스트 / 2013/01/15 01:18:33 / 추천 0
 두분 모두 답변 감사드립니다. 알려주신 프로젝트 한번 살펴봐야겠네요 ^^

변종원(웅파) / 2013/01/15 09:18:58 / 추천 0
이현석/ 저는 hook으로 전처리기(request 처리), 후처리기(response 처리)하게 하고 
컨트롤러에서는 특정변수를 받아 모델 처리후 특정변수에 담기만 하면
끝나게(개발자가 비지니스로직에만 전념하게) 해서 사용중입니다. 
남겨주신 링크도 깔끔하게 작업되어 있네요.