-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)> |