테스트 사이트 - 개발 중인 베타 버전입니다

run 함수 질문입니다 채택완료

lacomparte 7년 전 조회 2,305

</p>

<p> function run()

    {

        global $config, $g5, $member;</p>

<p>        // 현재접속자 처리

        $tmp_sql = " select count(*) as cnt from {$g5['login_table']} where lo_ip = '{$_SERVER['REMOTE_ADDR']}' ";

        $tmp_row = sql_fetch($tmp_sql);</p>

<p>        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);</p>

<p>            // 시간이 지난 접속은 삭제한다

            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']))."' ");</p>

<p>            // 부담(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'] ");

        }

 </p>

<p>

 

 

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

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

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

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

 

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

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

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

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

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

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

 

아래 코드가

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

</p>

<p>// 시간이 지난 접속은 삭제한다</p>

<p>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']))."' ");</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
7년 전

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

l
lacomparte
7년 전
if 문 밖에 두면 로그인이 풀리지는 않구요
그냥 login 테이블에서 삭제되는것 같은데요...
맞나요?
나시
7년 전
테스트를 해봐야 정확하겠지만
코드만 봐서는 현재 로그인 테이블에 없을때만 동작하도록 하는게 정확한거 같은데 ...

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

댓글을 작성하려면 로그인이 필요합니다.

E
7년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

l
lacomparte
7년 전
근데 왜 이게..
if else 문 안에 있었을까요;

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인