포럼
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에서 좋은 프로그래밍이 아니란건가요????
글쓴이 | 제목 | 최종 글 |
---|---|---|
어쿠스틱 | 게시판 확장변수 한줄 입력칸 폭에 옵션을 주실 수 없나요? [1] | 2011.02.28 by RainDrop+ |
친절뺀질이 | JQuery fade 효과 버그문의입니다. [1] | 2011.02.27 by ForHanbi |
어쿠스틱 | 비회원 상담기능 등이 필요합니다. [1] | 2011.02.26 by 라르게덴 |
SMaker | XE에 프로그램 조각(brick) 개념이 있다면 정말 좋을텐데요. | |
백성찬 | apc, memcache 와 같이 wincache를 사용하는 방법도 강구해주십시오. | |
행복한고니 | 재밌네요. -_-a [26] | 2011.02.25 by cherryfilter |
코아 코스튬 | XE 개발을 제대로 배울수 있는곳이 있으면 좋겠어요. [1] | 2020.03.14 by Garon |
백성찬 | 이슈트래커 타임라인 더보기 잘 보입니까? [9] | 2011.02.24 by ForHanbi |
ForHanbi | include에 대한 질문...가르침을...(관리자님 또는 고수님) | |
현원 | 테스트 중독... | |
백성찬 | 추천인과 비추천인 보기 관련 [2] | 2011.02.23 by 백성찬 |
misol | 유령 자료 하나만 더 삭제해주세요. | |
yaho. :-D | 영화/부동산과 같은 스킨 [1] | 2011.02.22 by 날개! |
토치송 | 정말 중요한 건의 하나 + 그럭저럭 건의 하나 [1] | 2011.02.22 by 하늘종 |
하아스 | 정녕 XE 관리자님 보안문제에 대하여 무시하는것인가요? [5] | 2011.02.21 by 날개나라 |
guny | 정적페이지 출력 시스템이 필요하지 않을까요. [1] | 2011.02.21 by Garon |
어쿠스틱 | ko.lang.php도 스킨의 일부로 하면 안될까요? [7] | 2011.02.20 by 어쿠스틱 |
독도2005 | 카페24에서는 쉬운설치가 안되나보군요?? [4] | 2011.02.20 by 필승의전세 |
shone | xe 쿼리문 작성법 좀 알려주시면... | |
백성찬 | 스마트폰 사용 하시는 분 테스트 부탁합니다. [13] | 2011.02.18 by houston |
pconnect 하면 어차피 연결 자체가 풀에서 관리되는지라 굳이 싱글턴을 끌어다 쓸 이유가 없을텐데요?
제가 쓰는 싱글턴은..