소셜로그인 중단 안내

계정으로 로그인 기능이 2023년 11월 16일 중단되었습니다.

아이보스 계정이 사라지는 것은 절대 아니며, 계정의 이메일 주소를 이용해 로그인 하실 수 있습니다.

▶️ 자세한 공지사항 확인

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

2007.09.07 08:20

오길호

조회수 2,525

댓글 2

프로그램 또는 몇가지 페이지들만 간단한 카운터가 필요한데, 배포되는 공개 멀티카운터들은
하나같이 Agent,레퍼값,... 등등 여러 쓸때없는 데이터까지 저장하기에 간단한걸 찾다
결국 포기하고 만들게 되었습니다.

* 최근 1주일까지는 일별 카운터를 저장하며, 전체 카운터도 저장합니다.

* DB 를 사용하지 않음으로써 DB Connection 시 발생하는 부하가 없습니다.

* 파일명을 바꿈으로써 멀티카운터로 응용할수 있습니다.

* 실제 데이터 파일은 아래와 같습니다.
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 />';
?>
마케팅
목록글쓰기
댓글 2
댓글 새로고침
로그인 후 더욱 많은 기능을 이용하세요!아이보스 로그인