run 함수 질문입니다

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
run 함수 질문입니다

QA

run 함수 질문입니다

답변 2

본문


 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 `$mysql_db` LIKE '$g5['login_table']' ");
            //if ($row['Data_free'] > 0) sql_query(" OPTIMIZE TABLE $g5['login_table'] ");
        }
 

 

 

위에 함수가 run 함수중 일부인데요.

아래 코드가 if else 문 안에 있으며 안되고 아예 밖으로 나와야 하는것 아닌가요?

if문 안에 있게 되면 제가 관리자 페이지에서 설정해 놓은

cf_login_minute 가 아예 실행되지 않는것 같은데..

 

그래서 if else 문 다음에 아래 코드를 넣었더니

제대로 작동하는것 같습니다.

저 코드가 if else 문 안에 있어야 할 이유가 있나요?

혹시 DB부담이 많이 될까요?

제가 cf_login_minute를 1분으로 해 놓았는데..

1분마다 삭제해야 하니;;

 

아래 코드가

1분이상 아무 활동없는 접속자를 삭제하는 건가요?


// 시간이 지난 접속은 삭제한다
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']))."' ");

이 질문에 댓글 쓰기 :

답변 2

말씀하신 대로 cf_login_minute 에 설정된 시간동안 아무것도 하지 않는 경우에 삭제를 하는거죠.

님처럼 if 문 바깥에 놓으면 접속하고 활동하다가도 1분이 지나면 삭제하니 다시 로그인을 해야 됩니다.

테스트를 해봐야 정확하겠지만
코드만 봐서는 현재 로그인 테이블에 없을때만 동작하도록 하는게 정확한거 같은데 ...

일단 주석 달아두고 if 문 밖으로 빼셔도 될거 같습니다.
그 쿼리로 부담되는거야 그위에 insert, update 가 있으니 대동소이한것으로 보입니다.

아래코드가 if문안에 굳이 있어야할 코드는 아닌거같습니다. 밖에 놔두었다면 global 밑에 놔두시면 정상적으로 작동하는 코드가 맞습니다. 그리고 쿼리문 1줄로 db에 부담이 가지는 않을꺼같네요

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