'파일'에 해당되는 글 1건
- 2007/09/01
프로그램 또는 몇가지 페이지들만 간단한 카운터가 필요한데, 멀티카운터를
찾아보면 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 />';
?>