안녕하십니까.
좋은아빠되기입니다.
사정상...아직 라이믹스에 올라타지 못하고
XE 사이트를 운영하고 있습니다.
그냥 자료실 같은 게시판으로 운영하고 있는지라..
저 말고는 글쓰는 사람들도 없고... ㅠ.ㅠ
아무튼.. 아직 XE를 벗어나지 못하신 분들중 필요하신 분들이 계실까하여 올려 봅니다.
(라이믹스는 이미 기본 기능으로 포함이 되어 있는것으로 압니다. 라이믹스 만세!!!!)
이곳 자료실은 라이믹스 자료 말고는 안올라 가는것 같아서 여기에
저의 기억을 저장하기 위한 용도와..혹시나 필요하신 분들을 위해서 올려 봅니다.
우선 XE의 기본 카운터는 방문자수 표시나 글 조회수 같은걸 위해서 사용하기는 하는데..
이게 엄청나게 많은 로그 기록을 남깁니다.
제가 XE 사이트를 한 10년 운영하고 보니깐...
엄청난 양의 로그 기록이 쌓이더라구요..
일단 서버 사양이 좋으면 버티는건 괜찮지만...DB 백업 받을때 상당히 문제가 발생을 하더라구요.
그래서...
하루 하루 사용을 마친(?) 로그들은 삭제를 해주는것이 좋을것 같아서...
저희 사이트 기준으로 2일 정도 지나면 로그는 이전 방문자수가 합산이 완전하게 이루어 지기 때문에
(실제로는 하루만 하면 되기는 한데.. 24시간 땡 맞추는게 좀 그렇더라구요. ㅎㅎㅎ)
최단 2일....
난 좀 많이 봐야겠다하면 30일 300일도 가능합니다만...
추천은 2일 입니다.
화면부터 보여 드릴께요.

이 기본 카운터 애드온을 수정했습니다.
작동은...

이렇게 로그 보관 기간 설정하는 달랑 한줄입니다.
코드 수정한 부분은 뜯어 보면 아시겠지만
addons/counter/counter.addon.php 파일 부분 수정 사항
//좋은아빠되기 아래 코드 추가
if($called_position == 'before_display_content' && !isCrawler())
{
// 관리자 설정값이 있으면 사용, 없으면 작동 안함
$keep_days = (int)$addon_info->keep_days;
if($keep_days > 0 && rand(1, 100) === 1)
{
$oDB = &DB::getInstance();
$target_date = date("YmdHis", strtotime("-" . $keep_days . " days"));
$query = sprintf("DELETE FROM %scounter_log WHERE regdate < '%s'", $oDB->prefix, $target_date);
$oDB->_query($query);
}
}
추가 설명...
rand(1, 100) === 1 이 문장을 통해서 100회 접속시 1회만... DB 삭제를 실행합니다.
매번하면.. 자원낭비?? ㅎㅎㅎ
더 짧게 줄이실려면 100을 50이나 30으로 줄여도 됩니다만... 본인 맘대로...
addons/counter/conf/info.html 파일 수정사항
<extra_vars>
<var name="keep_days" type="text">
<title xml:lang="ko">로그 보관 일수</title>
<description xml:lang="ko">입력한 일수가 지난 로그를 자동으로 삭제합니다.(숫자만 입력 : 추천값 2)(좋은아빠되기 추가)</description>
</var>
</extra_vars>
이렇게 두부분에 제가 작성한 코드가 추가 되어 있습니다.
일일이 수정하시기 번거로우실테니..
제가 실 사용중인 파일도 함께 올려 드립니다.(압축파일)
한달 이상 실 운영중인 서버에 사용했는데.. 문제는 없었습니다만...
위 애드온 사용으로 인하여 발생하는 어떠한 문제에 대하여서도 저는 책임지지 않습니다.
실 적용에 신중을 기해 주시기 바랍니다.
일단 저는 이상 없었습니다.
아무래도 엉성한 코드이다 보니
추가 적인 코드 수정은 본인 판단하에 하시면 될것 같습니다.
긴글 읽어 주셔서 감사합니다.
ps : 저도 아직 못했지만....
가능하면 라이믹스로 전환하시길....
ps2 : 주의!!!
로그 기록이 엄청나게 많을 경우 + 서버 사양이 안좋을 경우가 겹치면...
첫 작동시 수십초 정도 걸릴수도 있습니다.
엄청난 양의 로그를 한번에 삭제하기 때문입니다.
1회 작동후에는 속도 저하는 없을 껍니다.
참고 부탁 드리며
그게 싫으시면 DB에 직접 접근해서 테이블을 비우시고
사용하시는 방법을 추천 드립니다.
이 경우 오늘자 방문자수는 홀라당 날아 갑니다. ㅎㅎㅎ
댓글 0