CSV oder TXT z.B vom Zähler auslesen - Problem mit der Dateigröße

Hallo liebe IPS_Gemeinde,

ich habe nun schon länger das Problem, dass ich meine Stromzähler über den Umweg einer von EDL Cockpit erstellten Datei einlese. So weit kein Problem nur diese Datei hat nach ca. 3 Tagen die Größe von ca. 13000 Kb bis 15000 Kb erreicht. Dann werden die Daten nicht mehr eingelesen. Ich lösche dann die Datei und erstelle eine neue. Aber wenn ich es zu spät merke, fehlen mir natürlich einige Datensätze. Was kann ich tun? Gibt es auch einen Weg die Datei automatisch kleiner zu machen oder unter neuen Namen woanders abzuspeichern. Ich brauche ja eh nur die letzte Zeile.

Hier mein Auslesefile:

<?

$file = file("C:\Gesamt.csv");

$lastentry = $file[count($file)-1]; // letzte Zeile extrahieren , eventuell -1 einsetzen
$resoldata = explode(";", $lastentry); // Daten in ein Array  schreiben
print_r($resoldata);
$Datum = $resoldata[0];

SetValueString(50616 /*[Zähler\Stromzähler\Auslesedatum Zähler Gesamt]*/, $Datum); // ID anpassen
SetValue(37713 /*[Zähler\Stromzähler\Ausleseuhrezeit Gesamt]*/ , $resoldata[1]);
SetValue(55447 /*[Zähler\Stromzähler\zaehlernummer]*/ , $resoldata[2]);
SetValue(29476 /*[Zähler\Stromzähler\Lesistung Zähler Gesamt Aktuell]*/ , $resoldata[3]);
SetValue(49812 /*[Zähler\Stromzähler\zaehlerstand _Bezug]*/ , $resoldata[5]);
SetValue(35293 /*[Zähler\Stromzähler\Statusinformation]*/ , $resoldata[9]);
SetValue(27996 /*[Zähler\Stromzähler\Zählerstand Lieferung]*/ , $resoldata[11]);

?>

Die CSV oder TXT Datei sieht so aus:

Datum;Zeit;Zählernummer;Leistung;Obiskennzahl;Zählerstand;
29.01.2014;16:10:57;4xxxxA;189;1-0:1.8.0;3228,5467;1-0:1.8.1;3228,5467;1-0:1.8.2;0;1-0:2.8.0;2567,6814;1-0:2.8.1;2567,6814;1-0:2.8.2;0;
29.01.2014;16:10:59;4xxxxA;190;1-0:1.8.0;3228,5468;1-0:1.8.1;3228,5468;1-0:1.8.2;0;1-0:2.8.0;2567,6814;1-0:2.8.1;2567,6814;1-0:2.8.2;0;
29.01.2014;16:11:01;4xxxxA;190;1-0:1.8.0;3228,5469;1-0:1.8.1;3228,5469;1-0:1.8.2;0;1-0:2.8.0;2567,6814;1-

Hallo,

ich verwende für unser Tägliches Kraftwerklogbuch folgenden Codeschnipsel um täglich eine entsprechende Datei zu erzeugen. Für mehr Funktionen einfach mal nach „php date“ suchen.

 
$monat =date("m");
$jahr=date ("Y");
$datei= "Kraftwerkslogbuch@SymconServer-".$monat."-".$jahr.".csv";

Gruß Christian

Hallo
So wie das sehe wird das File nicht von IPS erstellt.
Er hat nur das Problem , wenn das File zu gross wird kann er
es nicht mehr komplett einlesen.
Wenn man nur die letzte Zeile haben will sollte man wohl
mit fseek zum Fileende springen und nur die die letzte Zeile einlesen.
Google hilft da.

Gesendet von meinem iPad mit Tapatalk HD

Du könntest mit fopen und w+ die Datei auf 0 kürzen, sofern Du Schreibrechte auf der Datei hast.

Hallo,

oder du nimmst diesen Codeschnipsel:

if (file_exists("C:\Gesamt.csv"))
{
$path1="Gesamt.csv";
$path2="Gesamt".time().".csv";
$co="copy $path1 $path2";
exec($co);
unlink("C:\Gesamt.csv");
}

Die Datei wird kopier und anschließend gelöscht.
Benutzung auf eigene Gefahr.

Schöne Grüße
Thomas

Danke, damit klappt es. Ich lasse einmal am Tag das script laufen und die Datei hat wieder 1 KB.
Alles Super.

if (file_exists(„C:\Gesamt.csv“))
{
$path1=„Gesamt.csv“;
$path2=„Gesamt“.time().".csv";
$co=„copy $path1 $path2“;
exec($co);
unlink(„C:\Gesamt.csv“);
}

viele Grüsse
Mcnelly