PHP 코딩 만을 이용하여 실시간 접속자 수 체크를 해 보았습니다.

사이트에 접속을 하면 고유의 Session을 부여하여 접속자가 중복되지 않도록 만들고 이 Session의 수를 계산하여 최종 접속자 수 를 체크 합니다.
<?
session_start();
$DbMachine = “localhost”;
$DbUser = “Mysql 이름”;
$DbPasswd =”페스워드”;
$conDB = mysql_connect($DbMachine, $DbUser, $DbPasswd);
mysql_select_db(“Mysql 이름”, $conDB);
mysql_query(“set session character_set_connection=euckr;”);
mysql_query(“set session character_set_results=euckr;”);
mysql_query(“set session character_set_client=euckr;”);
$table_name = ‘abc_siteon’;
$session_id = session_id();
$page = $_SERVER['HTTP_REFERER'];
if (strlen($page)<1) $page=”direct”;
$query = “insert into $table_name set session=’$session_id’”;
@mysql_query($query);
$query = “update $table_name set page=’$page’, ctime=now() where session=’$session_id’”;
@mysql_query($query);
$query = “delete from $table_name where ctime < DATE_SUB(NOW(), INTERVAL 10 SECOND)”;
@mysql_query($query);
?>
<img src=”siteon_counter.php” width=”1″ height=”1″>
<?
$DbMachine = “localhost”;
$DbUser = “Mysql 이름”;
$DbPasswd =”페스워드”;
$conDB = mysql_connect($DbMachine, $DbUser, $DbPasswd);
mysql_select_db(“Mysql 이름”, $conDB);
mysql_query(“set session character_set_connection=euckr;”);
mysql_query(“set session character_set_results=euckr;”);
mysql_query(“set session character_set_client=euckr;”);
$table_name = ‘abc_siteon’;
$query = “select count(*) total from $table_name”;
$result = mysql_query($query);
$total = 0;
if ($result) {
$row = mysql_fetch_row($result);
if ($row) {
$total = intval($row[0]);
}
}
echo “동시접속자 수”.$total.”명”;
?>
그러나 실시간으로 체크하는 것이 아닌 지정한 간격에 따라 해당 Session 이 있는지 없는지를 체크 하는것이기 때문에 만약 사용자가 사이트에 접속하고 아무런 반응이 없으면 접속을 끊은것으로 인지합니다.
$total 변수값을 플레시에서 GET 할 수 있지만 이러한 문제점이 남아 있기 때문에 이에 대한 해결 방안이 필요할 것 같습니다.
그래서 생각한 방법은 만약 PHP 와 FLASH 간에 출력하고 입력하고 받을 수 있는 구조가 맞다면

이러한 구조로 프로그램을 한다면 동시접속자를 찾아내는 방법이 아니더라도 원하던것을 구현할 수 있지 않을까 생각합니다.
일반적으로 웹 특성상 완벽한 실시간 접속자 수를 파악하지 못한다고 합니다. 하지만 일반적인 포털사이트만 보더라도 접속한사람이 몇명인지 회원인지 로그인이 되었는지 손님인지가 정확하게 파악이 되는것을 자주 볼 수 있습니다.
아직 모를 뿐 분명 무언가 방법이 있을거라 생각됩니다.