Tom: Bestimmte Zeilen einer Datei einlesen ?

Beitrag lesen

Hello,

ich hab eine Textdatei mit ca. 20 MB Inhalt der Zeilenweise getrennt ist.

Die 20MB sind kein Problem.

Ich möchte den Inhalt der Datei gerne in einen Buffer einlesen um diesen dann in meinen Scripten zu benutzen, allerdings nur bestimmte Zeilen.

Das geht dann aber (mit Ausnahmen) nur lesend.

Angenommen die Datei hat 1000 Zeilen, ich benötige aber nur Zeile 50-100, damit ist der Rest nur Speichermüll für mich und bei 20 MB nicht tragbar ;-)

Nur mit PHP:
Zähler initialisieren
Datei mit Handle öffnen
mit fgets(...,0) bis vor Startzeile lesen.
mit fgets(...,genügend Zeilenlänge) bis zur Stopzeile die Daten in den Buffer holen
Datei schließen.

Kann mir jemand sagen wie ich den Dateizeiger auf einen bestimmten Bereich der Datei schieben kann, oder geht das mit php nicht ?

s.o.

Dann noch etwas kleines, würdet Ihr bei der Größe der Datei dazu Raten die Daten in einer Datenbank zu speichern oder macht das keinen Unterschied ?

bei einer "geraden" Tabelle, also ohne Relations, sehe ich da nicht unbedingt Bedarf. Allerdings kann man über "echtes" HTTP (also verbindungslos) keine Sätze wirklich löschen, ohne das das System kompliziert (oder langsam) wird. Erklärungen würden hier zu weit führen.

Dabei geht es mir nicht unbedingt um Geschwindigkeit sondern eher um die Auslastung des Servers ...

Ich würde ein Random-Access-File daraus machen.
Ein Beispiel findest Du unter http://selfhtml.bitworks.de --> Adressverwaltung

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau