g5_login 테이블 함수 질문입니다.

g5_login 테이블 함수 질문입니다.

QA

g5_login 테이블 함수 질문입니다.

답변 1

본문


 
function run()
    {
        global $config, $g5, $member;
 
        // 현재접속자 처리
        $tmp_sql = " select count(*) as cnt from {$g5['login_table']} where lo_ip = '{$_SERVER['REMOTE_ADDR']}' ";
        $tmp_row = sql_fetch($tmp_sql);
 
        if ($tmp_row['cnt']) {
		
            $tmp_sql = " update {$g5['login_table']} set mb_id = '{$member['mb_id']}', lo_datetime = '".G5_TIME_YMDHIS."', lo_location = '{$g5['lo_location']}', lo_url = '{$g5['lo_url']}' where lo_ip = '{$_SERVER['REMOTE_ADDR']}' ";
            sql_query($tmp_sql, FALSE);
        } else {
			
            $tmp_sql = " insert into {$g5['login_table']} ( lo_ip, mb_id, lo_datetime, lo_location, lo_url ) values ( '{$_SERVER['REMOTE_ADDR']}', '{$member['mb_id']}', '".G5_TIME_YMDHIS."', '{$g5['lo_location']}',  '{$g5['lo_url']}' ) ";
            sql_query($tmp_sql, FALSE);
 
            // 시간이 지난 접속은 삭제한다
            sql_query(" delete from {$g5['login_table']} where lo_datetime < '".date("Y-m-d H:i:s", G5_SERVER_TIME - (60 * $config['cf_login_minutes']))."' ");
 
            // 부담(overhead)이 있다면 테이블 최적화
 
            //$row = sql_fetch(" SHOW TABLE STATUS FROM ariabackup LIKE {$g5['login_table']} ");
            //if ($row['Data_free'] > 0) sql_query(" OPTIMIZE TABLE {$g5['login_table']} ");
        }

 

안녕하세요. php를 본격적으로 실무에서 사용하고 하는 초보 개발자입니다.

그누보드(+영카트)는 기본적으로 사용자 로그인 정보를 g5_login 테이블을 사용하고

html_end -> run() 을 통해서 쿼리가 실행되는 형태고

그걸 접속할때마다 추가 및 삭제(1시간 경과시)하는 형태인 것 같더군요.

 

1.  그런데 이 부분 (delete from g5_login < where lo_datetime) 에서 

슬로우 쿼리가 잡힌다고 호스팅 업체에서 연락이 왔습니다;

 

로그 파일을 보니 쿼리 실행 타임은 대략 5~10초 정도나 걸리더군요;;

사용 업체가 대규모 쇼핑몰이고 실시간 접속자수가 수천명에 육박해서 그런 문제인지...

이외에도 다른 몇몇 그누보드에 내장된 쿼리들도 잡히는데

일단 로그인 부분부터 페이지 접속마다 실행되는 이 파일에서 조정이 필요할 거 같아서

질문드려봅니다.

 

 

2. 그리고 주석처리된 코드가 2줄 더 있던데

이 테이블 최적화 코드를 그냥 풀고 실행해도 되는건가요? 

조그만 서버에서 임상으로 사용했으나 작은 서버에서 해보는건 애초에 티가 나질 않아서...

 사실 이 두 줄의 역할을 아직도 잘 모르겠습니다;;

table status의 data_free를 0으로 초기화 해준다 라는 부분만 아는건데 이게 큰 차이가 있는건지

아니면 이것마저도 제가 잘못알고 있는건지..

 

  

혹시 제가 더 언급해야 할 정보가 더 필요하다면 첨언해주시면 감사하겠습니다.

이 질문에 댓글 쓰기 :

답변 1

1. 실시간 접속자수를 나타내주는 테이블이므로 접속이 종료된 로그파일 삭제는 로그파일 자체 쌓이지 않게 하면 될 듯 하구요. 

 

2. 실행해두 별 무리는 없어보입니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 14
© SIRSOFT
현재 페이지 제일 처음으로