제목 | db library 에서 save_queries 옵션에 대한 팁 | ||
---|---|---|---|
글쓴이 | pithecus | 작성시각 | 2012/03/29 22:39:12 |
|
|||
ci 로 db 입출력 작업을 하는 daemon 을 개발하는 중에 실행시간이 지날 수록 메모리 사용량이 계속 늘어나더군요. while(true): $sql = "~~~"; $this->db->query($sql); endwhile; 어디선가 메모리 leak 이 있나해서 찾아보다 보니 db library 의 query 에서 발견한 점 하나 공유드립니다. db library 에 보면 save_queries 라는 옵션이 있습니다. db->last_query() 및 profiler 에서 성능측정을 하기 위해서 이 옵션이 true 이면 db->query() 에서 실행한 sql 문자열을 전부 저장을 하더군요. 일반적인 웹페이지의 경우 response 를 하면 자동으로 종료가 되니 문제가 없겠지만 daemon 등의 loop 구조 또는 대량의 자료처리를 할 경우에는 얼마 지나면 php 가 멈춰버립니다 :) ci user guide 에는 save_queries 옵션 설정에 대한 내용은 없어서 좀 헤멨네요. $this->db->save_queries = FALSE 으로 코드상에 넣거나 database config 에 $config["save_queries"] = FALSE 를 설정해도 됩니다. (config 에 넣을 경우에는 db->last_query() 등 연관된 기능은 사용못하겠죠.) 더 궁금하신게 있으면 여기를 참조하시기 바랍니다. http://www.greeneggmedia.com/blog/entry/undocumented-codeigniter ci reactor 에 수정요청은 올라가 있는데 언제 반영될지는 모르겠네요. |
|||
다음글 | Customization Pagination (페이징 ... (1) | ||
이전글 | 세션 분실 && 읽지못함 관련 팁...이... (1) | ||
한대승(불의회상)
/
2012/03/30 11:28:19 /
추천
0
|
민상k
/
2012/05/22 13:56:47 /
추천
0
cron 에 넣어둔 크롤러가 자주 죽어서 원인을 살펴보고 있었는데 이 문제일 수도 있을 것 같군요.
한번 넣어봐야겠어요ㅋ |
민상k
/
2012/05/22 14:23:55 /
추천
0
알려주신 부분에 더하여,
길게 쓴 배열들 unset 하고, 주기적으로 라이브러리 재로드 하는 부분을 넣었더니 아직까지 안 죽고 잘 동작하네요ㅋ 좋은 정보 감사드립니다. |
cron 이나 daemon 종류라면 DB작업이 주가 될것 같습니다.
로직이 복잡 하지 않다면 CI를 사용하지 않는 방법도 대안이 될것 같습니다. ^^