미. 답신 글 달기 -2 답신 글 기능으로 인해 서버는 피곤하다
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 4,656 조회
- 0 추천
-
목록
본문
[강좌] php+mysql 게시판 만들기 #미-2
안녕하세요. 디망쉬입니다. 이제 우리는 게시판을 사실상 다 만들었습니다. 이번 편은 개발에서 한발짝 물러나 답신 글 기능에 대해 씹어보려 합니다. 이번 편을 어떻게 받아 자아. 그럼 한 번 씹어볼까요?
이 둘 다 DB 로 쿼리를 어떻게 날려주고 처리하느냐에 따라 속도의 차이가 생기겠지만 기본적으로 이 둘은 서버에 부하를 줍니다. 여기서 우리가 씹을 녀석은 관련글 기능이기에 검색에 대해서는 일단 제끼겠습니다. 관련글은 출력상으로 두 가지 형식 정도로 볼 수 있습니다. 용어를 잘 모르기 때문에 직접 모습으로 보도록 하죠. --; 1. 걍..리스트 방식
2. 쓰레드 방식
보통 웹 게시판은 2번 방식이 많고 PC 통신망(나우누리 등)은 1번 방식을 쓰는 편입니다. 간단하죠. 서버에 과부화를 적게 주니까. 하지만 2번의 경우 이보다 더 많은 컬럼이 필요합니다. 1번 방식은 관련글을 써도 단지 한 두번의 작업만 하면 끝나지만, 2번의 경우 7개의 부분이 수정이 이뤄집니다. 그만큼 DB에 쓰잘데기 없는 짓을 시키는거죠. 하지만 웹(정확히 말하면 http)이라는게 보여주기 위하는 성격이 강합니다. 배포되는 공개 웹 게시판만 보더라도 이쁜 것이 일단 더 많이 배포되는 모습을 보면 알 수 있습니다. 이런 의미에서 웹 게시판에게 2번 방식의 답신글 출력이 아니면 더이상 경쟁의 힘을 잃어버립니다. 자. 이제 하지 않을 수 없게됨을 알게 되었습니다. 그럼 어떻게 해줘야 좋을까요. 그것을 이야기 하기에 앞서 우리는 어떻게 짜야 좋은 코딩인지 알 필요가 있습니다. 아래는 제가 생각하는 좋은 코딩입니다. 1. DB 에 일을 최소화 시키자. 2. 일을 시킬 경우 한 번 시킬 때 모든 일을 다 처리시키자. 3. 변수를 많이 만들자 말자. 4. 제어문/반복문을 최소화하자. 누구나 아실만한, 혹은 공감하실 만한 내용입니다. ^^; 하지만 아는 것과 실천하는 것은 다르지요. DB 에 일을 최소화 시키자. 이건 정말 매우 중요한 것입니다. 예를 하나 들죠.
이렇게요. 그런데 이건 좋지 못한 방법입니다. 첫번째는 특정 컬럼만을 읽어와야하기 때문에 DB 서버가 좀 더 귀찮게 처리한다. 두번째는 위와 같이 정보 가져온 후 필요에 의해 한 번 더 정보를 가져와야할 수도 있다. 위와 같이 했는데 name 이라는 컬럼의 정보를 가져와야한다면
한 후에
식으로 해줘야 합니다. (물론 극단적인 예입니다. 누가 저렇게 하나요. --; 그냥
이라고 하고 말지. --;) 우리는 이것을
로 고침으로서 좀 더 빠르고 효율적인 관리가 가능해집니다. 실제로 테스트 해본 기억으로는
식으로 한 것이 0.3초 정도 걸리던 것이
라고 하자 0.05 초 정도가 소요되더군요. 물론 이렇게 하면 서버 메모리 소비가 조금 심해집니다. 때문에 우리는 특정 범위에서만 읽어올 필요가 있죠.
형식으로요. (5개만 읽어온다는 의미)
변수를 많이 만들지 말자는 메모리 소비를 줄이자는 의미이기도 합니다. 예를 들겠습니다.
위는 1부터 10까지 한 줄 단위로 출력한 뒤, 11부터 15까지는 - 문자로 뒤에 이어붙이며 출력하는
라고 해줘도 됩니다. 변수를 $i 한 개로 줄인거죠. 물론 위와 같은 사항이 항상 적용되는 것은 아닙니다. 하지만 변수 한 개로 해도 될 것을 두 개로 할 필요가 없다면 한 개로 처리하는게 좋습니다. 서버는 반복문을 싫어합니다. 반복문 못지 않게 제어문(if..else 같은거)도 싫어합니다. (사실 좀 더 컴퓨터 입장에서 보면 제어문을 더 싫어합니다. --;) 반복문이라는 것은 계속 반복시키다가 유저가 설정한 조건에 만족되면 반복을 강제로 중단시킵니다. 제어문은 제어문이 해결되기 직전까지 컴퓨터가 멈추게 됩니다. (그 딜레이는 매우 짧지만 어쨌건 컴퓨터가 일을 처리하다 말고 순간적으로 다른 일을 (조건문 처리) 하게 되므로 멈추게 되는 셈입니다) 그래서 제어문과 반복문이 많을수록 게시판은 느려지게 됩니다. 물론 제어문과 반복문을 줄이기는 사실상 매우 힘듭니다. 속도에 민감한 저는 제어문을 짤 때 많이 사용될만한,
라는 조건문이 있다고 하죠. 그런데 프로그램을 운영하다보니 $i 가 2인 경우가 월등하게 많습니다.
라고 바꿔버립니다. 물론 이런 짓은 어리석다면 어리석고 지나치다면 지나칠 수 있습니다.
물론 이것을 좀 더 깔끔하게 최적화한다면 더 나아질 것입니다. 비록 그 정도는 크지 않으나 최적화하면 충분히 효과를 볼 수 있는 부분은 반드시 최적화한다면 게시판은 점 점 빨라질 것입니다. 그런 의미에서 답신글 기능은 머리를 많이 굴리고 손을 많이 쓸 수록 빨라지고 좀 더 효율적으로 변합니다. 제가 이번 편에서 의도하고 싶은 것은 바로 이점입니다. :] 에헤헤. 가벼운 내용을 무게잡으며 쓰려한 만행의 최후인지, 글이 매우 들떠있군요. ^^; 허접한 이번 회는 이렇게 끝나고 말았습니다. 이제 게시판 제작의 고지는 사실상 끝을 향해있습니다. ----------------------------
|
관련자료
-
이전
-
다음