Archive/기타

ZB] 제로보드 4.x [제로카운터] IP & Referer 자동 삭제 (5일이전)

제로카운터 받기
[제로카운터] 자동으로 DB를 지우자. (IP와 referer 5일 분량만 남기기)


제로카운터의 문제점이 있으니,
모든 방문자의 IP 주소와 Referer 를 DB에 저장하기 때문에
바로 엄청난 양의 DB 공간을 차지한다는 것입니다.

다음의 팁은
IP와 Referer DB를 5일분량만 남기고, 그 이전의 것은 모두 삭제해버리는 방법입니다.
물론, 카운터수는 그대로 유지되되며 필요없는 IP 정보와 Referer 만 삭제하는 것이죠.

zerocounter.php3 파일에서, 다음의 코드(대략 50번째 줄)를 찾습니다.

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

// 전체
$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값을 자동 삭제 :: 많은 db양을 차지하는 부분을 수정
$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());


zerocounter.php3 파일은 제로카운터가 실행될 때마다 로딩되기 때문에 자동으로 DB를 지워줍니다.
이렇게 하면 DB 용량도 별로 차지하지 않고, 정기적으로 DB를 삭제해줘야하는 불편도 없습니다.


--------------------------------------------------------------------
제로 카운터를 상당기간 사용후, 위의 팁을 적용할 경우
별도로 "counter_ip", "counter_referer"테이블을 최적화 해주어야 삭제된 DB공간이 확보됩니다.
phpMyAdmin 등에서, 해당 테이블의 "속성"탭을 확인하여
처리할 수 있습니다.




mySQL에서 직접 테이블 조정해주기. [2004/07/19]

select * from counter_ip;
// 현재 counter_ip 테이블에 저장된 값을 본다.

delete from counter_ip where no<100;
// no값이 100보다 작은 필드를 삭제
// 적절히 값을 변환해서, 최근의 100개 정도만 남깁니다.

update counter_ip set no=no-1000;
// no값을 1000뺀 값으로 리셋한다.
// 적절히 값을 변환해서 no값을 1번부터 나타나도록 합니다.

alter table counter_ip auto_increment=101;
// counter_ip의 auto_increment값을 101로 셋팅한다.

no필드의 auto_increment가 적용되어 있으므로,
이 값을 조정해주지 않으면 새로운 필드의 no값이 기존 값을 사용하게 됩니다.
반응형