[첫화면으로]"UseModWiki소스수정/페이지카운터" 페이지의 변경 내역

마지막으로 [b]


현재 버전 . . . . (수정) 2007-1-8 12:19 pm 수정한 사람: Raymundo
4 번째 수정본 . . . . 2003-3-8 10:11 am 수정한 사람: Raymundo
 

변경사항 (가장 최근의 "일반적인 수정"부터) (소소한 수정)

-14,15 +14,16
* 부작용 : 
** 각 페이지의 카운터를 "페이지이름.cnt" 라는 화일을 만들어 기록한다. 매번 페이지를 볼 때마다 해당 화일을 열고 쓰고 닫아야 한다. 이 홈에서 테스트할 때는 milisecond 단위로도 거의 차이가 없는 것으로 봐서 화일 입출력 시간 자체는 문제가 아닌데, 일관성 유지를 위해서 기록하는 순간에 lock 을 걸기 때문에 동시 방문자 수가 매우 많은 사이트의 경우 대문이나 최근변경내역 같은 페이지를 볼 때는 lock 을 경쟁하느라 문제가 생길 수 있다. 이 소스에서는 lock 을 얻는 데 실패할 경우, "단 한 번 재시도. 재시도 하기 전에 1초 대기. 재시도가 실패하면 조회수 갱신을 포기"하도록 인자를 주었기 때문에 별 탈이 없을 거라 희망하지만... 모르는 일이다.
** 가끔 어느 페이지의 카운트가 0으로 리셋되어 버리는 경우가 발생한다. 즉 그다지 신뢰성이 없는 카운터 -_-;;;
* 소스 수정
: config.pl 에 카운터 화일들이 저장될 디렉토리를 지정한다.
{{{perl
{{{#!vim perl
$CountDir    = "$DataDir/count";  # by gypark. Stores view-counts
}}}
: wiki.pl
{{{perl
{{{#!vim perl
...
###############
### added by gypark

-46,7 +47,7
}}}
:
{{{perl
{{{#!vim perl
sub BrowsePage {
    my ($id) = @_;
    my ($fullHtml, $oldId, $allDiff, $showDiff, $openKept);

-68,7 +69,7
}}}
:
{{{perl
{{{#!vim perl
sub GetEditGuide {
    ...
    if ($UseDiff) {

-89,7 +90,7
}}}
:
{{{perl
{{{#!vim perl
sub DeletePage {
    ...
### cache 화일도 같이 삭제

-103,7 +104,7
}}}
:
{{{perl
{{{#!vim perl
sub RenamePage {
    ...
### cache 화일은 삭제

-122,7 +123,7
}}}
:
{{{perl
{{{#!vim perl
### 아래 두 함수를 추가
sub GetCountFile {
    my ($id) = @_;

-173,7 +174,7
}}}
: action=maintain 을 하면, 현재 조회수 화일이 만들어지지 않은 페이지들에 대해 조회수를 "0"으로 세팅해준다.
{{{perl
{{{#!vim perl
sub DoMaintain {
    ...
    foreach $name (&AllPagesList()) {

-202,7 +203,7
번역 화일에서 "15 hits" 를 "조회수 : 15" 같이 순서를 바꾸는 것을 위해서... T('hits') 를 Ts('%s hits', $ViewCount) 로 바꿨습니다. <mysign([[Raymundo]],2003-3-7 11:23 pm)>
조회수가 0 또는 1일 때는 hits 대신 hit 라고 나오게 다시 고쳤습니다.
{{{perl
{{{#!vim perl
    $result .= Ts('%s hit' . (($ViewCount > 1)?'s':'') , $ViewCount)." | " if ($ViewCount ne "");
}}}
<mysign([[Raymundo]],2003-3-8 9:27 am)>