[PHP] 파일형 멀티(?) 카운터
- 08-31
- 19,877 회
- 0 건
프로그램 또는 몇가지 페이지들만 간단한 카운터가 필요한데, 멀티카운터를
찾아보면 Agent,Refer... 등등 여러 쓸때없는 데이터까지 저장하기에 간단한걸
찾다 결국 포기하고 만들게 되었습니다.
찾아보면 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^
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">prince@kilho.net, http://www.kilho.net )
///////////////////////////////////////////////////////////
function kcount($filename,&$todaycount,&$totalcount)
{
$today=date('Y/m/d', time());
<?
///////////////////////////////////////////////////////////
// 파일 카운터
// 2007년 8월 26일
// 오길호(prince@kilho.net">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);
}
{
$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);
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];
$todaycount=$dat[3];
return $result;
}
?>
}
?>
* 아래는 임시파일?! 사용할 파일....
<?
include 'kcount.php';
// test.cnt <- 707 로 해둬야됨!
kcount('test.cnt',$todaycount,$totalcount);
<?
include 'kcount.php';
// test.cnt <- 707 로 해둬야됨!
kcount('test.cnt',$todaycount,$totalcount);
echo '오늘카운터:'.$todaycount.'<br />';
echo '전체카운터:'.$totalcount.'<br />';
?>
echo '전체카운터:'.$totalcount.'<br />';
?>