aardig-mode:
PHP:
1
| <?$snaam = $SERVER_NAME;$maandlog = "D:\data\\".$snaam."\log\access.log"; error_reporting(1);$fd = fopen("$maandlog","r"); while ($y = fgets($fd,1024)) { $linecount++; }$y = NULL;fclose($fd);$fd = fopen("$maandlog","r"); while ($x = fgets($fd,1024)) { list( , , , , , , , , , $size) = explode(" ", $x, 10);if($size != "-") { $ytotal = ($ytotal + $size); }}fclose($fd);$ytotal = ($ytotal / 1024);$ytotal = round($ytotal, 1);?><html><head><title>Statistieken voor www.<? echo "$snaam"; ?></title></head><body bgcolor="White"><CENTER><HR WIDTH="82%"><BR> <FONT FACE="Times New Roman" COLOR="Black" SIZE="6"> <B><I>Statistieken voor www.<? echo "$snaam"; ?></I></B> </FONT> <BR> <FONT FACE="Arial" COLOR="Black" SIZE="3">Statistieken gegenereerd op <?function NLDate($timestamp) { $maanden = Array ("dummy","Januari","Februari","Maart", "April","Mei","Juni","Juli","Augustus", "September","Oktober","November", "December"); $dagen = Array ("Zondag","Maandag","Dinsdag", "Woensdag","Donderdag","Vrijdag", "Zaterdag"); $dag = $dagen[date("w",$timestamp)]; $maand = $maanden[date("n",$timestamp)]; return $dag . " " . date("j",$timestamp) . " " . $maand . " " . date("Y",$timestamp); } $now = mktime(0,0,0,date("n"),date("j"),date("Y")); $datum = NLDate($now); print $datum; print " om ";setlocale( "LC_ALL", "de_DE" );putenv( "PHP_TZ=Europe/Berlin" );$now = time();print date("H:i:s");?><BR>Request gedaan vanaf IP <? echo "$REMOTE_ADDR"; ?> </FONT><BR><BR><BR><FONT FACE="Arial" COLOR="Black" SIZE="4">Dataverkeer voor deze maand: <? echo "$ytotal"; ?> Kb (<? $ytotal = ($ytotal / 1024); $ytotal = round($ytotal, 2); print $ytotal; ?> Mb)</FONT></body></html>?> |
Dat is dus het script zoals ik het gebruik.
Via een gescheduled bat bestandje wordt elke maand, op de 1e, 0.00 uur (exact begin vd maand dus) alle logfiles verwijderd..
waardoor teller weer op 0 komt te staan dus.
Paar opmerkingen:
1. Mijn bak draait ook windows

(Apache + PHP 4.02)
2. Mijn datastructuur: op de D: zit een map data. Daaronder alle domeinen, daaronder dus een logmap bv.
D:\DATA\DOMEIN.COM\LOG\ACCESS.LOG
domein.com wordt dus via een phpding in script gepropt, je zult 'm zelf ff moeten editten zodat jouw path ook klopt.
Verder heb ik dus voor elk domein een vhost, alle domeinen hebben hun eigen logfile. (zo telt ie dus ook alleeen de bytes van dat domein)
Tenslotte zitten er nog een zooi bugs in denk ik en wil ik nog veel meer doen, maar goed, dit is dan ook m'n 1e php script...
Ik wil er bv nog bij dattie mailtje krijgt als een domein over dataverkeer is,
en een mailtje dat klant waarschuwing krijgt als ie bijna door verkeer is.
Verder wil ik uitgebreidere stats erin, hits per dag enzovoorts.
enzovoorts.
btw: ik heb 1 alias op de server gemaakt, /stats/
Elk verzoek (
www.domein.com/stats/ ) verwijst dus naar hetzelfde php file.
anders moet je per virtual host dat php script erin pleuren en editten als je weer wat wijzigd
btw: voorbeeldje (is dus de output van dit script, heb alleen een extra tabel erbij ivm bedrijfsnaam gegevens enz, heb ik ff weggelaten uit script, maar dat kun je zelf wel weer erbij bouwen
http://www.djsmiley.com/stats/