PHPでアクセスカウンタを作ってみる
各ページのアクセス数をひとつのテキストファイルを保存し,総アクセス数, 今日アクセス数, 昨日アクセス数を表示できるアクセスカウンタ.多分動く.
mycounter.php
<?php function mycounter(){ $countDatas = array(); /* 書式 */ /* array(ページ名 => array('all' => 総アクセス数, 'today' => 昨日アクセス数, 'yesterday' => 昨日アクセス数, 'date' => 最期に記録した日付)) */ $filename = "counter.txt"; /* 書式 */ /* ページファイル名=総アクセス数,今日アクセス数,昨日アクセス数,最期に記録した日付 */ /* ファイルの読み込み */ if(file_exists($filename)){ $file = fopen($filename, "r"); while(!feof($file)){ $line = fgets($file); if($line == "") continue; $matchEqual = preg_split("/=/", $line, 2); /* =で分断 */ $matchCron = preg_split("/,/", $matchEqual[1], 4); /* ,で分断 */ $pageName = $matchEqual[0]; $countdatas[$pageName] = array(); $countDatas[$pageName]['all'] = intval($matchCron[0]); $countDatas[$pageName]['today'] = intval($matchCron[1]); $countDatas[$pageName]['yesterday'] = intval($matchCron[2]); $countDatas[$pageName]['date'] = intval($matchCron[3]); } fclose($file); } /* 日付をまたいでいたら更新 */ if($countDatas[$_SERVER['SCRIPT_NAME']]['date'] != null && $countDatas[$_SERVER['SCRIPT_NAME']]['date'] != intval(date('j'))){ $countDatas[$_SERVER['SCRIPT_NAME']]['yesterday'] = $countDatas[$_SERVER['SCRIPT_NAME']]['today']; $countDatas[$_SERVER['SCRIPT_NAME']]['today'] = 0; } /* カウンタの更新,設定 */ $countDatas[$_SERVER['SCRIPT_NAME']]['all']++; $countDatas[$_SERVER['SCRIPT_NAME']]['today']++; if($countDatas[$_SERVER['SCRIPT_NAME']]['yesterday'] == null) $countDatas[$_SERVER['SCRIPT_NAME']]['yesterday'] = 0; /* ファイルに書き込み */ $file = fopen($filename, "w"); flock($file, LOCK_EX); foreach($countDatas as $key => $countData){ fputs($file, $key.'='.$countData['all'].','.$countData['today'].','.$countData['yesterday'].','.date('j')."\n"); } flock($file, LOCK_UN); fclose($file); return $countDatas[$_SERVER['SCRIPT_NAME']]; } ?>
test.php
<?php require_once('mycounter.php'); $countData = mycounter(); print('all '.$countData['all'].'<br />'); print('today '.$countData['today'].'<br />'); print('yesterday '.$countData['yesterday']); ?>