[PHP] 파일형 멀티(?) 카운터

- 08-31
- 20,319 회
- 0 건
프로그램 또는 몇가지 페이지들만 간단한 카운터가 필요한데, 멀티카운터를
찾아보면 Agent,Refer... 등등 여러 쓸때없는 데이터까지 저장하기에 간단한걸
찾다 결국 포기하고 만들게 되었습니다.
-
급하게 필요로 만든거라 어떤 문제가 있을진 모르겠네요. 아무튼 1주일정도는 돌려본결과 정상적으로 작동은 되고 있습니다.
-
최근 1주일까지는 일별 카운터를 저장하며, 전체 카운터도 저장합니다.
-
실제 데이터 파일은 아래와 같습니다.
10^93577^2007/08/31^7131^2007/08/30^8455^2007/08/29^8467^2007/08/28^8940^2007/08/27^8688^2007/08/26^8797^2007/08/25^7891^ -
아래는 kcount.php 로 저장
<? /////////////////////////////////////////////////////////// // 파일 카운터 // 2007년 8월 26일 // 오길호(prince@kilho.net, http://www.kilho.net ) /////////////////////////////////////////////////////////// function kcount($filename,&$todaycount,&$totalcount) { $today=date('Y/m/d', time()); if(!file_exists($filename)) { $dat[0]=1; $dat[1]=1; $dat[2]=$today; $dat[3]=1; for($i=0;$i<6;$i++) { $dat[($i*2+4)]='-'; $dat[($i*2+5)]=0; } }else { $fp = fopen($filename,'r'); if(flock( $fp, LOCK_EX )) { $buf = fread($fp,filesize($filename)); $old = explode('^',$buf); if($old[2]==$today) { for($i=0;$i<16;$i++)$dat[$i]=$old[$i]; $dat[1]++; $dat[3]++; }else { for($i=2;$i<14;$i++)$dat[$i+2]=$old[$i]; $dat[0]=$old[0]+1; $dat[1]=$old[1]+1; $dat[2]=$today; $dat[3]=1; } flock( $fp, LOCK_UN ); } fclose($fp); } $fp = fopen($filename,'w'); if(flock( $fp, LOCK_EX )) { for($i=0;$i<16;$i++)fwrite($fp,$dat[$i].'^'); flock( $fp, LOCK_UN ); $result=true; }else{ $result=false; } fclose($fp); $totalcount=$dat[1]; $todaycount=$dat[3]; return $result; } ?>
-
아래는 임시파일?! 사용할 파일....
<? include 'kcount.php'; // test.cnt <- 707 로 해둬야됨! kcount('test.cnt',$todaycount,$totalcount); echo '오늘카운터:'.$todaycount.'<br />'; echo '전체카운터:'.$totalcount.'<br />'; ?>
로그인 후 댓글내용을 입력해주세요