가입 회원수 뽑는 방법 질문입니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

가입 회원수 뽑는 방법 질문입니다. 정보

가입 회원수 뽑는 방법 질문입니다.

본문

안녕하세요..
어제 웹호스팅사로 부터 연락을 받았습니다.
제 사이트가 너무 많은 과부하를 주고 있다고..차단해야겠다고...
그래서 살핀 결과...
아래 관련 쿼리들이 계속 돌더군요.. 일단 급히 아래 코드가 실행 안 되도록 하긴 했는데요..
 
아래 쿼리들이 그리 많은 과부하를 주나요?
( 어제 경우, 방문자가 5000, 동시접속(10분단위체크) 200 정도 되었습니다. )
그렇다면, 서버에 부하를 주지 않는 방법은 없나요?
급합니다.. 전문가님들의 도움이 필요합니다.. ^^:
 
총회원수, 어제 가입, 오늘 가입 입니다.. 꼭 좀 도와주세요...

    $sql ="select count(*) from $g4[member_table]";
    $result = sql_query($sql);
    $row = mysql_fetch_array($result);
    $total_member = $row[0];
 
    $sql ="select count(*) from $g4[member_table] 
      where TO_DAYS(CURDATE()) - TO_DAYS(mb_datetime) = 0";
    $result = sql_query($sql);
    $row = mysql_fetch_array($result); 
    $today_member = $row[0];
 
    $sql ="select count(*) from $g4[member_table] 
      where TO_DAYS(CURDATE()) - TO_DAYS(mb_datetime) = 1";
    $result = sql_query($sql); 
    $row = mysql_fetch_array($result); 
    $yesterday_member = $row[0];
 
  <tr bgcolor="#F4F4F4">
    <td width="80" height="16">▒ 어제가입</td>
    <td width="90" height="16"><font color="#4B4B4B"> :
      <?=$yesterday_member?>
      </font></td>
  </tr>

  <tr bgcolor="#F4F4F4">
    <td width="80" height="16">▒ 오늘가입</td>
    <td width="90" height="16"><font color="#4B4B4B"> :
      <?=$today_member?>
      </font></td>
  </tr>

  <tr bgcolor="#F4F4F4">
    <td width="80" height="16">▒ 총회원수</td>
    <td width="90" height="16"><font color="#4B4B4B"> :
      <?=$total_member?>
      </font></td>
  </tr>

댓글 전체

회원수가 많은 상태에서 동시사용자가 많다면 충분히 부하를 줄수있는 구조입니다.
일단 $g4[member_table]  테이블을 항상 조회하도록 되어있는데...

어제가입, 오늘가입, 총회원수에 대한 정보를 일정시간 간격으로 구해서
$g4[config_table]의 여분필드 cf_1, cf_2, cf_3 정도에 입력해두시고
사용자 화면에서 호출시 위의 $g4[member_table] 테이블에서 조회하지말고
$g4[config_table] 테이블에서 조회하는 방식으로 처리해보시기 바랍니다

ps. $g4[config_table] 테이블은 관리자화면의 기본환경설정을 저장하는 테이블입니다.
다음과 같이 DB의 변화가 발생되는 경우만

쿼리를 실행시키는 방식도 적절한 방법이 될 수 있습니다.

http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=1679&sca=&sfl=wr_subject%7C%7Cwr_content&stx=preload&sop=and
where TO_DAYS(CURDATE()) - TO_DAYS(mb_datetime) = 0";
where TO_DAYS(CURDATE()) - TO_DAYS(mb_datetime) = 1";

이 조건 안 좋군요. full index scan을 합니다.
index column에 mysql 함수를 사용하지 마세요.

where mb_datatime between a and b

형태로 바꾸세요.

$tmp= date('Y-m-d');

$a= "$tmp 00:00:00";
$b= "$tmp 23:59:59";

" ... where mb_datatime between $a and $b" 오늘 가입한 사람
조언 정말로 감사합니다.
그런데.. 제가 아직 초보단계라서, 많이 어렵군요.. ^^:
공부해야 겠습니다..
일단 rolo 님 말씀처럼 변경해 놓구요..
root 님 방법을 좀 더 연구해 봐야겠습니다..
나스카님 링크는 설명 너무 어려워서요.. ^^: 한참 공부해야 할 거 같네요..
아무튼 조언 정말 감사합니다. ( _ _ ) 꾸벅
다음 팁을 적용해보세요
그누보드4 > 팁(tip) > 어제/오늘 회원가입자수 체크
http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=5585
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT