Candid Dauth: Zeile aus Datei entfernen, ohne Datei einlesen zu müssen.

Beitrag lesen

Heißa, Forum,

ich habe eine Datei, in der zeilenweise Werte drinstehen:

bla  
moep  
blubb  
gautera  
[…]

Nun soll ein PHP-Skript folgendes machen:
Es soll eine zufällige Zeile finden, deren Wert benutzen und die Zeile dann aus der Datei löschen, damit der Wert kein zweites Mal benutzt wird.

Das Problem ist nun, dass die Datei ziemlich groß ist (mehrere MB) und ich sie deshalb nicht komplett in den Speicher laden will. Eine zufällige Zeile herauszufinden ist nun kein Problem, ich nehme einfach an eine zufällige Position in der Datei (ermittelt per rand() und filesize()) und suche dann den nächstbesten Zeilenumbruch. Das Problem ist aber das Löschen der Zeile.

Im Chat habe ich mir sagen lassen, dass PHP hierfür keine Boardmittel mitbringt. Also wurde mir empfohlen, die Datei Stück für Stück auszulesen, auf diese Weise den Inhalt in eine andere Datei zu kopieren – bis eben auf die Zeile – und dann die Original-Datei mit der neuen zu überschreiben.

Das gefällt mir nur nicht ganz, denn es kann sein, dass das Script ziemlich oft aufgerufen wird, und das würde den Server recht stark belasten, wenn er ständig mehrere MB hin- und herkopieren müsste, nur um eine Zeile aus der Datei zu löschen.

Hat jemand von euch eine Idee, wie man das schön performant lösen könnte?

Gautera!
Grüße aus Biberach Riss,
Candid Dauth

--
Ein Fußball-Fan? Noch auf der Suche eine Schlafmöglichkeit im Großraum Stuttgart für die WM 2006? Wie wäre es mit Herrenberg, einer gemütlichen Kleinstadt am Rande des Schönbuchs? – Von der Lage her ideal, auch für andere Vorhaben im Urlaub. Ferienwohnungen-Herrenberg.com.
http://cdauth.de/