run 함수 질문입니다
본문
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문안에 굳이 있어야할 코드는 아닌거같습니다. 밖에 놔두었다면 global 밑에 놔두시면 정상적으로 작동하는 코드가 맞습니다. 그리고 쿼리문 1줄로 db에 부담이 가지는 않을꺼같네요
답변을 작성하시기 전에 로그인 해주세요.