Hi,
hab ein Script, dass eine Datei Zeile für Zeile parst, das Apache-Log-file.
Tut auch erstmal ganz brav seinen Dienst.
Aber so ein Logfile bekommt schnell mal ne unhandliche Größe.
53MB in 190.000 Zeilen meinem Fall.
An und für sich lauft es so ab dass ich in einer Schleife die Zeilen abarbeite.
while ($line = fgets($fp)) {
$einCounter++;
$hilfsvariable = null;
tuWasMit($line);
}
Alle Variablen werden am Anfang der Schleife werden auf ihren Ursprungswert zurückgesetzt, damit die nächste Zeile bearbeitet werden kann.
Warum will das Script irgendwan über ein GB Ram haben?
Muß ich den Speicher von Variablen explizit freigeben?
Bisher dachte ich das zB
$line = 'zeile 1'; eben ihren Speicher hat und wenn ich
$line = 'zeile 2'; mache eben der Speicher für den nächsten Inhalt verwendet wird und zusätzlich allockiert wird.
Und bisher dachte ich auch, wenn ich zB ein Object
$object = new ObjectClass($daten);
habe, dass der Speicher frei wird und neuer verwendet wird, wenn ich erneut
$object = new ObjectClass($neueDaten);
angebe.
Vieleicht kann mir jemand erklären, wei ich das Speichermanagement ein wenig kontrollieren kann, denn in der Suche, über Google und den üblichen Handbüchern bin ich nicht fündig geworden.
Gruß
Der Desian
hab ein Script, dass eine Datei Zeile für Zeile parst, das Apache-Log-file.
Tut auch erstmal ganz brav seinen Dienst.
Aber so ein Logfile bekommt schnell mal ne unhandliche Größe.
53MB in 190.000 Zeilen meinem Fall.
An und für sich lauft es so ab dass ich in einer Schleife die Zeilen abarbeite.
while ($line = fgets($fp)) {
$einCounter++;
$hilfsvariable = null;
tuWasMit($line);
}
Alle Variablen werden am Anfang der Schleife werden auf ihren Ursprungswert zurückgesetzt, damit die nächste Zeile bearbeitet werden kann.
Warum will das Script irgendwan über ein GB Ram haben?
Muß ich den Speicher von Variablen explizit freigeben?
Bisher dachte ich das zB
$line = 'zeile 1'; eben ihren Speicher hat und wenn ich
$line = 'zeile 2'; mache eben der Speicher für den nächsten Inhalt verwendet wird und zusätzlich allockiert wird.
Und bisher dachte ich auch, wenn ich zB ein Object
$object = new ObjectClass($daten);
habe, dass der Speicher frei wird und neuer verwendet wird, wenn ich erneut
$object = new ObjectClass($neueDaten);
angebe.
Vieleicht kann mir jemand erklären, wei ich das Speichermanagement ein wenig kontrollieren kann, denn in der Suche, über Google und den üblichen Handbüchern bin ich nicht fündig geworden.
Gruß
Der Desian
Kommentar