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년 전
�
나시
7년 전
테스트를 해봐야 정확하겠지만
코드만 봐서는 현재 로그인 테이블에 없을때만 동작하도록 하는게 정확한거 같은데 ...
일단 주석 달아두고 if 문 밖으로 빼셔도 될거 같습니다.
그 쿼리로 부담되는거야 그위에 insert, update 가 있으니 대동소이한것으로 보입니다.
코드만 봐서는 현재 로그인 테이블에 없을때만 동작하도록 하는게 정확한거 같은데 ...
일단 주석 달아두고 if 문 밖으로 빼셔도 될거 같습니다.
그 쿼리로 부담되는거야 그위에 insert, update 가 있으니 대동소이한것으로 보입니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
그냥 login 테이블에서 삭제되는것 같은데요...
맞나요?