This is the example file index.php for showing an estats file with PHP and gd-lib (gfx-lib for php). Please create a temporary directory for the graphics file called temp.
<?php session_start(); /* sll_estats.php - Auswertung der Sim-Statistik */ // estats file to use // $DATEINAME = "San.csv"; // BREITE UND HOEHE DER STATISTIK // $width=1024; $height=400; // Variablen lokal verfuegbar machen ?> <html> <head> </head> <body> <style type="text/css"> body {background-color: #ffffff; color: #000000;} <!-- body, td, th, h1, h2 { font-family: Trebuchet MS; } --> td { border-width:0px; border-color:#000000; border-style:solid; padding:0px; padding-left:10px; padding-right:10px; margin:0px; } .mytd { background-image:url('blank.gif'); border-width:2px; border-color:navy; border-style:dotted; padding:0px; padding-left:0px; padding-right:0px; margin :0px; } .teaser { margin: 0.0em 0; letter-spacing: .05em; background: #eeeeff; border: 1px dotted navy; } </style> <?php // Werte // $W[0]="Incoming BPS"; $W[1]="Outgoing BPS"; $W[2]="Script-Time"; $W[3]="ResentPackets"; $W[4]="FPS"; $W[5]="Dilation"; $W[6]="Frame-Time"; $W[7]="Physics-Time"; $W[8]="Unacked-Bytes"; $W[9]="Active-Scripts"; $W[10]="Agents"; $W[11]="Objects"; $W[12]="Memory"; $W[13]="Threads"; $W[14]="CPU"; $W[15]="Uptime"; $W[16]="Agent-Time"; $W[17]="Agent-Updates"; $W[18]="Child-Agents"; $W[19]="Received-Resents"; $W[20]="Missed-Pings"; $W[21]="Net-Time"; $W[22]="Other-Time"; $W[23]="Image-Time"; $W[24]="Physics-FPS"; $W[25]="VirtualSize"; $W[26]="Last-Lag"; $W[27]="In-PPS"; $W[28]="Out-PPS"; $W[29]="Avatar-Balance"; $W[30]="Virtual Memory"; $W[31]="Complete Prims"; $W[32]="Prim-Objects"; $W[33]="Avatar Attachments"; $W[34]="Avatar Attachment-Prims"; $W[35]="Avatars in sight"; $W[36]="Avatars online"; if (!file_exists($DATEINAME)) { echo "Fehler: Die Datei ".$DATEINAME." existiert nicht!"; die; } if (!file_exists("temp")) { echo "Fehler: Das Verzeichnis <b>temp</b> existiert nicht!"; die; } if (!@fopen("temp/foo.bar", w)) { echo "Fehler: Das Verzeichnis <b>temp</b> ist nicht schreibbar!"; die; } if ($_POST[WERT]!="") { $_SESSION[WERT]=$_POST[WERT]; } // Statistik 1 // if ($_SESSION[WERT]=="") { $_SESSION[WERT]=0; } $LEGENDE[0]="The line shows \"".$W[$_SESSION[WERT]]."\""; // Anzahl der Logfileeintraege auf einer Seite // if ($_GET[anz]=="") { $anz=20; } else { $anz=$_GET[anz]; } if ($_GET[anfang]=="") { $_GET[anfang]=$anzahl_gesamt-$anz; } if ($_GET[anfang]<0) { $_GET[anfang]=0; } $offset_minus=$_GET[anfang]-$anz; if ($offset_minus<0) { $offset_minus=0; } $offset_plus=$_GET[anfang]+$anz; $fd=fopen($DATEINAME, r); $c=0; while ($fd && !feof($fd)) { $buffer=fgets($fd, 1024); if (substr($buffer, 0, 4) == "Date") { continue; } if ($buffer=="") { continue; } // echo $c."=".$buffer."<br>"; $exp=explode(";", $buffer); $line[0][$c]=(int)str_replace(",",".",$exp[$_SESSION[WERT]+1]); $line["date"][$c]=$exp[0]; $c++; } $WERTE=1; $anzahl=$c; // PUFFER $px=80; $py=150; // INITIAL X $ix=50; // INITIAL Y $iy=25; // FARB WERTE FESTSETZEN $col[0][0]=10; $col[0][1]=100; $col[0][2]=0; $col[1][0]=0; $col[1][1]=0; $col[1][2]=255; $col[2][0]=100; $col[2][1]=200; $col[2][2]=0; $col[3][0]=255; $col[3][1]=0; $col[3][2]=0; // DIVISION BY ZERO ABFANGEN if ($anzahl==0) { $anzahl=1; } // ABSTAND BERECHNEN $abstand=($width-$ix)/($anzahl-1); // BILD ERZEUGEN $image=imagecreate($width+$px,$height+$py); // HINTERGRUNDFARBE BESTIMMEN $background_color = ImageColorAllocate ($image, 240, 240, 240); // EINHEITEN FARBE BESTIMMEN $bar_color = ImageColorAllocate($image, 0, 0, 0); // EINHEITEN FARBE BESTIMMEN $bar_grey = ImageColorAllocate($image, 200, 200, 200); // DEN HOECHSTEN WERT VON ALLEN RAUSFINDEN $big = 0; for ($a=0; $a<count($line[0]); $a++) { if ($line[0][$a] > $big) { $big = $line[0][$a]; } } //$dotted=array("-1,0", "0,1", "1,0", "0,-1", "1,1", "-1,1", "-1,-1", "1,-1", "-2,0","0,2","2,0","0,-2", "2,2", "-2,2", "-2,-2", "2,-2"); // EINHEITEN AN DEN RAND SCHREIBEN $r=$width-$ix; // + LINKS UNTEN NACH LINKS OBEN imageline($image,$ix,$height+$iy,$ix,1+$iy,$bar_color); imageline($image,$ix+$r,$height+$iy,$ix+$r,1+$iy,$bar_color); // ++ LINKS UNTEN NACH RECHTS UNTEN imageline($image,$ix,$height+$iy,$width-$ix,$height+$iy,$bar_color); // Big Korrektur // if ($big < 1) { $big=1; } // ++ EINHEITEN ++ for ($a=0; $a<=$big; $a+=1) { // WIEVIEL PROZENT IST DER WERT VON BIG ? if ($big==0) { $big=1; } $prozent_big=$a/$big*100; // WIE HOCH IST DER PROZENTWERT VON DER HOEHE ? $y_pos=$height/100*$prozent_big; if ($y_pos-$y_pos_drawn>10 || $a==0) { // HORIZONTALE LINIE imageline($image,$ix-5,$height-$y_pos+$iy,$ix+5,$height-$y_pos+$iy,$bar_color); // BESCHRIFTUNG imagestring ($image, 1, $ix-30, $height-$y_pos-3+$iy, $a, $bar_color); // HORIZONTALE LINIE imageline($image,$ix-5+$r,$height-$y_pos+$iy,$ix+5+$r,$height-$y_pos+$iy,$bar_color); // BESCHRIFTUNG imagestring ($image, 1, $ix+20+$r, $height-$y_pos-3+$iy, $a, $bar_color); imageline($image,$ix+6,$height-$y_pos+$iy,$ix+$r-6,$height-$y_pos+$iy,$bar_grey); $y_pos_drawn=$y_pos; } } // DIE GROSSE ARRAY SCHLEIFE for ($b=0; $b<$WERTE; $b++) { // FARBE AUS FARBARRAY HOLEN $text_color = ImageColorAllocate ($image, $col[$b][0], $col[$b][1], $col[$b][2]); for ($a=0; $a<count($line[0]); $a++) { // WIEVIEL PROZENT IST DER WERT VON BIG ? $prozent_big=$line[$b][$a]/$big*100; // WIE HOCH IST DER PROZENTWERT VON DER HOEHE ? $y_prozent=$height/100*$prozent_big; // WENN ERSTER PIXEL, DANN KEINE LINIE, NUR MERKEN if ($a>0) { imageline($image,$x+$ix,$y+$iy,$ix+intval($a*$abstand),($height-$y_prozent+$iy),$text_color); /* for ($c=0; $c<count($dotted); $c++) { $dotted_exp=explode(",", $dotted[$c]); $x=((intval($a*$abstand))+$ix+$dotted_exp[0]); $y=(($height-$y_prozent)+$iy+$dotted_exp[1]); imagesetpixel($image, $x, $y, $text_color); } */ } else { /* for ($c=0; $c<count($dotted); $c++) { $dotted_exp=explode(",", $dotted[$c]); $x=((intval($a*$abstand))+$ix+$dotted_exp[0]); $y=(($height-$y_prozent)+$iy+$dotted_exp[1]); imagesetpixel($image, $x, $y, $text_color); } */ } // UNTERE BESCHRIFTUNG // if ($b==0) { if (intval($a*$abstand)>($xview+50)) { $exp=explode(" ", $line["date"][$a]); imagestring ($image, 1, intval($a*$abstand)+$ix-19, $height+10+$iy, str_replace(date(Y)."-","",$exp[0]), $bar_color); imagestring ($image, 1, intval($a*$abstand)+$ix-19, $height+20+$iy, $exp[1], $bar_color); $xview=intval($a*$abstand); } } $x=intval($a*$abstand); $y=($height-$y_prozent); } // BESCHRIFTUNG if ($b==0) { $text=$LEGENDE[0]; } imagestring($image, 1, $ix, $height+($b*10)+50+$iy, $text, $text_color); } // Bild auf Platte schreiben // imagepng($image, "temp/".session_id().".png"); // Bild anzeigen // echo "<form method=POST action='$_SERVER[PHP_SELF]' name='formular' name='formular2'>"; echo "What to display? <select name='WERT' onChange='this.form.submit();'>"; for ($a=0; $a<count($W); $a++) { echo "<option value='$a' "; if ($a==$_SESSION[WERT]) { echo " selected"; } echo ">$W[$a]</option>"; } echo "</select>"; echo " <input type='submit' value='View'>"; echo "</form>"; echo "<img src='temp/".session_id().".png?r=".date(U)."'>"; ?>