Copy
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분이상 아무 활동없는 접속자를 삭제하는 건가요?
Copy
// 시간이 지난 접속은 삭제한다
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개 / 댓글 3개
채택된 답변
+20 포인트
말씀하신 대로 cf_login_minute 에 설정된 시간동안 아무것도 하지 않는 경우에 삭제를 하는거죠.
님처럼 if 문 바깥에 놓으면 접속하고 활동하다가도 1분이 지나면 삭제하니 다시 로그인을 해야 됩니다.
답변을 작성하려면 로그인이 필요합니다.
그냥 login 테이블에서 삭제되는것 같은데요...
맞나요?