포럼
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
singleton 관련 궁금한 부분....
2011.03.18 10:05
DB 연결부분은 Singleton 스타일로 만들어 볼려고 했더니 자료를 찾아보는중에 굳이 singleton 스타일로 만들 필요가 없다더군요...
그래도 만들어진 클래스 자주자주 새로이 생성혹은 파괴되는일을 굳이 안해도 될듯해서 찾아서 만들어 사용해봤습니다.
주로 c++을 하던터라 어색하게 구현 해버렸습니다.
우선 php의 객체 스타일이 c++ 이랑 많은 부분에서 틀리더군요....
class Singleton;
매소드 public getInstance();
class DBCon extends Singleton;
이런식으로 구현부와 사용되는곳을 분리할려고 했는데...
문제는 이런스타일의 경우 오류를 내더군요...
$myDB = DBCon::geInstance();
이런식으로 함수를 호출시 문제가 발생하더군요.
문제는 부모객체를 생성하지 자식객체가 생성되는것이 아니더군요...
그래서 php.net에 가보니 좋은 방법은 getInstance();에서
get_called_class();라는 함수를 이용하면 쉽게 해결이 되는데...
5.3이하 버전에서는 조금 구리게 만들어지더군요...
혹시 가장 좋은 방법을 알고 계신분 계신가요....
차라리 그냥 안만드는게 가장 좋은걸까요???
ps.
c++ 객체 스타일과 php의 객체 스타일이 많이 틀리더군요...
특히 상속에서의 스타일은 훨씬더 심플하게 구현되어있네요...
singleton 찾다보니 php를 이용한 디자인 패턴구현되어있는 사이트가 있더군요...
사이트 링크 걸어두었습니다.
http://www.fluffycat.com/PHP-Design-Patterns/
그래도 만들어진 클래스 자주자주 새로이 생성혹은 파괴되는일을 굳이 안해도 될듯해서 찾아서 만들어 사용해봤습니다.
주로 c++을 하던터라 어색하게 구현 해버렸습니다.
우선 php의 객체 스타일이 c++ 이랑 많은 부분에서 틀리더군요....
class Singleton;
매소드 public getInstance();
class DBCon extends Singleton;
이런식으로 구현부와 사용되는곳을 분리할려고 했는데...
문제는 이런스타일의 경우 오류를 내더군요...
$myDB = DBCon::geInstance();
이런식으로 함수를 호출시 문제가 발생하더군요.
문제는 부모객체를 생성하지 자식객체가 생성되는것이 아니더군요...
그래서 php.net에 가보니 좋은 방법은 getInstance();에서
get_called_class();라는 함수를 이용하면 쉽게 해결이 되는데...
5.3이하 버전에서는 조금 구리게 만들어지더군요...
혹시 가장 좋은 방법을 알고 계신분 계신가요....
차라리 그냥 안만드는게 가장 좋은걸까요???
ps.
c++ 객체 스타일과 php의 객체 스타일이 많이 틀리더군요...
특히 상속에서의 스타일은 훨씬더 심플하게 구현되어있네요...
singleton 찾다보니 php를 이용한 디자인 패턴구현되어있는 사이트가 있더군요...
사이트 링크 걸어두었습니다.
http://www.fluffycat.com/PHP-Design-Patterns/
댓글 6
-
현원
2011.03.18 10:58
-
카르마
2011.03.18 11:27
저하고는 정반대의 생각을 하셨군요.
BackupXE 제작때 메모리 문제때문에 고민을 많이 했습니다.
루프를 돌리면 돌릴수록 메모리누수가 심해져서 서버반응속도가 현저히 느려지더군요.
Mysql은 그나마 자체적으로 메모리관리가 되서 좀 나은편이지만 큐브리드는 완전히 뻗어버립디다.
DB의 경우 connect를 계속 물고 가는 것이 문제가 되지 않아 싶은 생각에
disconnect후 connect 하는 방법으로 meomory를 clear시키는 방법이 없을까 하는 무식한 생각에 별 뻘짓을 다 했었습니다.
결국은 다 포기하고 executeQuery()만 삭제하는 선에서 절충했었습니다.
쿼리 XML 화일대신에 Sql문을 직접 만들어야하는 불편이 있기는 합니다만...
좌우간 executeQuery()를 빼고나니 완벽한 수준은 아니지만 많이 호전되더군요.
참고하시기 바랍니다.
-
ForHanbi
2011.03.18 11:53
현원님이나 카르마님의 저 박식함
참 부러움 ㅠ.ㅠ -
카르마
2011.03.18 12:20
박식하다구요?...
무식으로 똘똘 뭉쳐서 별 뻘짓을 다 하다가 쌓이고 쌓인 경험일 뿐입니다.
박식이나 지식과는 전혀 무관하다는...끙~~ㅋㅋ -
현원
2011.03.18 14:54
저 가끔 더하기 못합니다. -
푸하라
2011.03.18 22:04
현원님의 방법은 매클래스마다 저소스를 넣어야 되는것 아닌가요???
카르마님 대단하시네요...
저도 비슷한경험을 해본적이있는데... 예전에 모듈개발하다가 처음에는 xml 쿼리를 사용방법이 너무 어려워 mysql 쿼리를 그냥 사용했는데.. 결과는 예상의외로 빠르다였습니다.
그리고 이건 예전에 mfc에서 경험한것인데... 매회 쿼리이용후 메모리에 쌓이는것을 경험한적이있습니다.
결국은 왜 그런문제가 발생했는지 결론낼시간이없어서. 카르마님의 대답처럼 메모리에 적제되는 클래스에서 disconnect를 할수 밖에 없었는데.. 지금생각해보니깐 disconnect를 해도 메모리에 적제된 데이터가 유령처럼 남아있던것 같네요...
프로세스가 죽어야 완전히 사라지는 현상을 목격했던거 같습니다.
하도 오래되서 예전에 해결방법이 떠오르지 않네요 ㅠㅠ;
암튼 궁금한것은 싱글톤이 php에서 좋은 프로그래밍이 아니란건가요????
글쓴이 | 제목 | 최종 글 |
---|---|---|
씨지 | 스펨공동대응모듈 프로젝트에 이슈적고 스펨처리당한듯.^^;; | |
철갑 | XE모듈에 대해서 공부중인데 몇가지 질문이 있습니다. [2] | 2011.03.29 by 철갑 |
쿤. | 27시간동안 해결을 못해서 질문드립니다.(엉엉ㅠㅠ) [1] | 2011.03.28 by SMaker |
yumenohosi | XE의 DB 데이터 모델을 구할수 없을까요 [1] | 2011.03.28 by criuce |
Ti27 | XE 궁금한 사항 및 개선되었으면 하는 내용들.. | |
푸름빠 | 사용자 정의 처리 루틴 필요성 [1] | 2011.03.26 by SMaker |
정찬명 | XE를 자동차에 비유하면 이런 느낌일까요? [7] | 2011.03.26 by 인생예술가 |
999 | DB 설계 구조가 속도에 영향을 줄수도.... [3] | 2011.03.24 by ForHanbi |
999 | 커뮤니티 - XE사용팁은 위키 게시판으로.. | |
mglradio | xe 사전 있나요? [1] | 2011.03.24 by 에메랄드그린 |
어쿠스틱 | 1.4.4.4 모바일은 깨져보이는 부분이 있습니다. [4] | 2011.03.24 by 어쿠스틱 |
김 무건 | iePngFix | |
김태형650 | XE에서는 LDAP 연동 완전히 배제된 건가요?? [1] | 2011.03.22 by 난다날아 |
웹 엔진 | 검색 키워드는 어떤방식으로 코드로 바꾸나요? [4] | 2011.03.19 by 웹 엔진 |
푸하라 | singleton 관련 궁금한 부분.... [6] | 2011.03.18 by 푸하라 |
행복한고니 | PHP4는 개발이 더이상 안되나 봅니다. [11] | 2020.03.14 by BlogJh |
999 | 트래픽 문제에 대해 토론해 봅시다. [1] | 2011.03.17 by Treasurej |
Treasurej | 난 웹프로그래머.. 디자이너가 필요하다.. | |
hika1 | jquery 질문 하나만요.. [7] | 2011.03.16 by hika1 |
이영한389 | 모바일 페이지에서 글을 쓰면 문구를 추가하고 싶습니다. |
pconnect 하면 어차피 연결 자체가 풀에서 관리되는지라 굳이 싱글턴을 끌어다 쓸 이유가 없을텐데요?
제가 쓰는 싱글턴은..