+ Antworten
Ergebnis 1 bis 3 von 3
  1. #1
    Registriert seit
    Mar 2009
    Ort
    Berlin
    Beiträge
    791

    Standard Diagramme per PHP erzeugen.

    Hallo,

    ich bin da wohl nicht der beste Erklärer, aber ich hoffe es kommt etwas dabei rüber.
    Vorgeschichte ist, ich speichere bei mir viele Variablen in log Dateien, das geschied über solche PHP Zeilen:
    PHP-Code:
    <?
        $timestamp 
    time(); // Uhrzeitholen nur für den Log
        
    $datum date("d.m.Y",$timestamp); // Datum entschluesseln nur für den Log
        
    $uhrzeit date("H:i",$timestamp); // Uhrzeit entschluesseln nur für den Log
        
    $mintemp1440 GetValue(30973 /*[Verbrauchszaehler\mintemp1440]*/   );
        
    $s0aktuell GetValue(20526 /*[Verbrauchszaehler\DS2423P\Zähler 1]*/   );
        
    $mincount1440 $s0aktuell $mintemp1440;
        
    $datei fopen("R:\ip-symcon-log\min1440.log","a"); // Logfile oeffnen
        
    fwrite($datei"$datum $uhrzeit $timestamp $mincount1440 \r\n"); // Logfile schreiben
        
    fclose($datei); // Logfile schliessen

    ?>
    Das Logfile sieht das so aus:
    Code:
    06.06.2009 00:00 1244239200 21704 
    07.06.2009 00:00 1244325600 24444 
    08.06.2009 00:00 1244412000 22271 
    09.06.2009 00:00 1244498400 21433 
    10.06.2009 00:00 1244584800 18948 
    11.06.2009 00:00 1244671200 20373 
    12.06.2009 00:00 1244757600 21779 
    13.06.2009 00:00 1244844001 19414 
    14.06.2009 00:00 1244930400 20985
    Nun wollte ich aus diesen Daten gerne ein Diagramm machen, könnte man ja auch mit dem WIIPS, aber wenn dort erst mal ein falscher Wert in die Datenbank gerutscht ist bekommt man den eigentlich nicht wieder raus, hier im Logfile kann ich jederzeit editieren
    Wie bekommt man nun aus den Daten ein Diagramm.
    Zum einen muß man wissen wie man eine CSV datei ein liest.
    Das ist recht einfach und funktioniert über dieses Script:
    PHP-Code:
    <?php
    $Zeilen 
    1;
    $Dateizeiger fopen("R:\ip-symcon-log\min60_2.log","r");
    while((
    $Daten fgetcsv($Dateizeiger100" ")) !== FALSE)
    {
        
    $AnzahlDerFelder count($Daten);
        
    $Zeilen++;
        
    print_r($Daten);
    }
    fclose($Dateizeiger);
    ?>
    dieses Script liest die csv Datei Zeile für Zeile bis keine Zeilen mehr da sind und packt die Daten in das Array $Daten, welches dann so aussieht:
    Code:
    Array
    (
        [0] => 06.06.2009
        [1] => 00:00
        [2] => 1244239200
        [3] => 21704
        [4] => 
    )
    Array
    (
        [0] => 07.06.2009
        [1] => 00:00
        [2] => 1244325600
        [3] => 24444
        [4] => 
    )
    Nun zum eigentlichen Diagramm erzeugen, dafür habe ich unter
    SourceForge.net: PHPLOT
    ein Script gefunden welches aud Daten Diagramme macht.
    Diese war recht leicht zu installieren, ich hab die PHP dateien einfach mit ins Verzeichniss scrips abgelegt und in der PHP.ini die Zeile:
    PHP-Code:
    include_path "C:\Programme\IP-Symcon\scripts\" 
    Hinzugefügt das wars.
    Das Script für das Diagramm sieht so aus, auszuführen auf einen Webserver, da das Bild direkt an den Browser gesendet wird:
    PHP-Code:
    <?php
    $Zeilen 
    1;
    $Dateizeiger fopen("R:\ip-symcon-log\min1440.log","r");
    //Include the code
    require_once 'phplot.php';

    //Define the object
    $plot = new PHPlot();

    //Define some data
    $example_data = array(
    );
    while((
    $Daten fgetcsv($Dateizeiger100" ")) !== FALSE)
    {
        
    $AnzahlDerFelder count($Daten);
        
    $Zeilen++;
        
    $example_data[] = array($Daten[0],$Daten[3]);
    }
    $plot->SetDataValues($example_data);

    //Turn off X axis ticks and labels because they get in the way:
    $plot->SetXTickLabelPos('none');
    $plot->SetXTickPos('none');
    //fclose($Dateizeiger);

    //Draw it
    $plot->DrawGraph();
    ?>
    Als Anhang mal das erste Diagramm, ist noch nicht das schönste, aber funktioniert erst mal.

    Schöne Grüße
    Thomas
    Geändert von ThomasD (14.06.09 um 21:55 Uhr)

  2. #2
    Registriert seit
    May 2005
    Ort
    Leipzig
    Beiträge
    3,964

    Hallo,

    wieso bekommst Du denn falsche Werte in den RRD Datenbanken nicht wieder raus? Es wurde schon mehrfach geschrieben, dass man dies mit dem RRD Editor machen kann. Einfach mal unter rrdtool.org danach suchen, sollten einige zu finden sein.

    Bedenke, dass Deine Datenbanken mit Sicherheit keine Langzeit-Archivierung in dieser Form zulassen. RRD bspw. kann ohne Probleme 10 Jahre und sogar noch laenger speichern und auch problemlos verwalten.
    Gruss Uwe

  3. #3
    Registriert seit
    Mar 2009
    Ort
    Berlin
    Beiträge
    791

    Hallo,

    editieren schon, aber man hat bei einer Polling Zeit von einer Minute, nur 60 sec Zeit die Datenbank zu XML zu konvertieren die falschen Daten suchen, editieren und wieder zu rrd zurückwandeln, schaft man es nicht in 60sec hat man schon wieder eine neue Lücke.

    Der RRD Editor zeigt bei mir nur die Daten an, Änderungen werden nicht übernommen.

    Schöne Grüße
    Thomas

Ähnliche Themen

  1. Beispiel Internetradio und mp3 Wiedergabelisten per Handsender
    Von Ferengi-Master im Forum Allgemeine Diskussion
    Antworten: 100
    Letzter Beitrag: 12.05.09, 14:08
  2. Graphen per PHP
    Von agotthold im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 6
    Letzter Beitrag: 18.11.07, 18:45
  3. wie serverip auslesen per php
    Von pleibling im Forum Allgemeine Diskussion
    Antworten: 1
    Letzter Beitrag: 06.05.07, 08:14
  4. Problem - PHP version 5.1 und extensions
    Von daniel1005 im Forum Allgemeine Diskussion
    Antworten: 4
    Letzter Beitrag: 30.11.05, 21:29