웹마스터 팁

제로카운터. 사용자의 마음대로 꾸미기가 가능하고 강력한 통계기능을 가진 좋은 카운터죠.

하지만 이에도 문제점이 있었으니 바로 엄청난 양의 db를 차지한다는 것입니다.

모든 방문자의 IP 주소와 referer 를 db에 저장하기 때문에

방문객이 1만명, 10만명으로 늘어날수록 db의 용량은 엄청나게 늘어납니다.

그래서, 이 같은 문제점 때문에 제로카운터의 사용을 포기하는 경우가 많은데요.

IP와 referer DB를 5일분량만 남기고 그 이전의 것은 모두 삭제해버리면 이 문제는 간단히 해결됩니다.

물론, 카운터수는 그대로 유지되기 때문에 1년전의 카운터수도 알 수 있습니다.

단지, 별 필요없는 IP 정보와 referer 만 삭제하는 것이죠.



(제로카운터가 정상적으로 작동한다고 가정하고...)

zerocounter.php3 파일을 메모장으로 불러옵니다.

53번째 줄에 보면


//------------------- 카운터 값 읽어오는 부분 -----------------------------------

  // 전체
  $total=mysql_fetch_array(mysql_query("select unique_counter, pageview from counter_main where no=1", $connect));
  $count[total_hit]=$total[0];
  $count[total_view]=$total[1];


부분이 있죠. 여기에

$date = 60 * 60 * 24 * 5;
mysql_query("delete from counter_ip where (".time()." - date) >= ".$date) or error(mysql_error());
mysql_query("delete from counter_referer where (".time()." - date) >= ".$date) or error(mysql_error());

를 넣어줍니다.

즉, 수정하면

//------------------- 카운터 값 읽어오는 부분 ----------------------------------------------------------------------
$date = 60 * 60 * 24 * 5;
mysql_query("delete from counter_ip where (".time()." - date) >= ".$date) or error(mysql_error());
mysql_query("delete from counter_referer where (".time()." - date) >= ".$date) or error(mysql_error());

  // 전체
  $total=mysql_fetch_array(mysql_query("select unique_counter, pageview from counter_main where no=1", $connect));
  $count[total_hit]=$total[0];
  $count[total_view]=$total[1];

이렇게 되는 것이죠. 새롭게 추가한 것 소스는 5일이 지난 IP 정보와 referer 정보를 지워버리는 것입니다.

zerocounter.php3 파일은 제로카운터가 실행될 때마다 로딩되기 때문에

자동으로 db를 지워줍니다.

이렇게 하면 db 용량도 별로 차지하지 않고 정기적으로 db를 삭제해줘야하는 불편도 없습니다.



(제가 이 팁을 nzeo의 어디선가 보았는데요. 다시 찾아보니 찾을수가 없어서 다시 적어보았습니다.)