현재접속자수 정확성 문제... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

현재접속자수 정확성 문제... 정보

현재접속자수 정확성 문제...

본문

tail.sub.php에서
 
현재접속자 소스를 보니 페이지를 열때마다 현재접속자의 로그인시간과  아이피정보를 갱신하더군요
 
그런데 아래 소스를 실행하는 싯점이 문제가 잇는거 같습니다
---------------------------------------------------------------
 // 시간이 지난 접속은 삭제한다
sql_query(" delete from $g4[login_table] where lo_datetime < '".date("Y-m-d H:i:s", $g4[server_time] - (60 * $config[cf_login_minutes]))."' ");
----------------------------------------------------------------
 
 
문제점은
 
내가 접속하고 있는 한 다른 회원들이 10분이고 1시간이고 페이지 접속이 없어도 다른 접속자는 계속 접속된걸로 나오는 문제입니다
 
그러니깐 내가 접속해 있는 한 다른 접속자가 사이트를 떠난지 30분, 1시간 이상 되었다고 해도
내가 접속해 있는한 위 시간이 지난 접속은 삭제가 안되는게 아닐까요
 
 
그래서
 
위 시간이 지난접속자를 삭제하는 코드는 현재 접속자를 사용하는 스킨이있는 페이지 제일 하단에 위치시켜야 맞다고 생각이 드네요
 
 
답글 바랍니다
  • 복사

댓글 전체

문제 없어 보입니다.
위 큐어리는 지정된 시간 (60 * $config[cf_login_minutes] ) 보다 더 오래된 접속자는 삭제 되는거 아닌가요?
즉 내가 접속한 것과 무관합니다.
위 커리 자체는 문제가 없고요 제말은 위 커리가 실행되는 싯점에 대해 얘기하는 겁니다

A가 B가 현재접속자에 노출되었다고 합시다

A,B가  계속 로그인 중에는 위 커리가 실행이 안되고 그 사이에 다른 사람이 로그인하면 위 커리가 실행되겟죠

일단 두사람이 로그인상태에서 B가 로그아웃을 했다고 합시다

B가 나가도 B는 현재 접속자에 계속 남아있게 됩니다. A의 아이피가 변경되지 않는 한 1시간이고 2시간이고
B의 접속로그는 삭제되지 않습니다. 삭제되려면 A,B외에 다른 사람이 들어오면 B가 삭제가 됩니다


아래 소스를 자세히 보면 삭제되는 싯점이 제가 말한것과 같은거 같은데...음...제가 잘못아는건가요
암튼 지난시간접속자 커리가 else{ } 문장안에 있으면 안되고 그 밑으로 와야 된다고 생각되는데요


$tmp_sql = " select count(*) as cnt from $g4[login_table] where lo_ip = '$_SERVER[REMOTE_ADDR]' ";
$tmp_row = sql_fetch($tmp_sql);
if ($tmp_row['cnt'])
{
$tmp_sql = " update $g4[login_table] set mb_id = '$member[mb_id]', lo_datetime = '$g4[time_ymdhis]', lo_location = '$lo_location', lo_url = '$lo_url' where lo_ip = '$_SERVER[REMOTE_ADDR]' ";
sql_query($tmp_sql, FALSE);
}
else
{
$tmp_sql = " insert into $g4[login_table] ( lo_ip, mb_id, lo_datetime, lo_location, lo_url ) values ( '$_SERVER[REMOTE_ADDR]', '$member[mb_id]', '$g4[time_ymdhis]', '$lo_location',  '$lo_url' ) ";
sql_query($tmp_sql, FALSE);

// 시간이 지난 접속은 삭제한다
sql_query(" delete from $g4[login_table] where lo_datetime < '".date("Y-m-d H:i:s", $g4[server_time] - (60 * $config[cf_login_minutes]))."' ");

}
무슨 말씀인지 이해가 되네요.

// 시간이 지난 접속은 삭제한다
sql_query(" delete from $g4[login_table] where lo_datetime < '".date("Y-m-d H:i:s", $g4[server_time] - (60 * $config[cf_login_minutes]))."' ");

이 큐어리가 else 밖에 있어야 될 것 같습니다.
© SIRSOFT
현재 페이지 제일 처음으로