Rolf b: Große Dateien aufspringen mit PHP / Shell

Beitrag lesen

Hallo Peter,

hast Du Dich in PHP (ab Version 5.5) schon einmal mit dem Thema "Generatoren" (klickmich für info) beschäftigt? Es sieht mir nämlich so aus, als könnte deine Aufgabenstellung davon großartig profitieren. Mit Generatoren kann man Verarbeitungspipelines aufbauen, weil nämlich ein Generator B einen Generator A iterieren kann. Vor allem kannst Du das auch dynamisch zusammenstecken.

Generator 1: File Reader

Wenn es eine Binärdatei ist: Generator 2: Bin2Hex Konverter, bekommt Generator 1 als Eingabe

Generator 3: Weitere Verarbeitung, bekommt Generator 1 oder 2 als Eingabe, je nach dem ob Binär oder nicht.

Nach dem Du deine Generatorkette aufgebaut hast, verarbeitest Du das Ergebnis des letzten Generators mit einer foreach Schleife. PHP kümmert sich darum, dass die einzelnen Generatoren nach Bedarf eine Runde bis zum nächsten yield drehen.

Auf diese Weise hast Du, je nach dem wieviele Bytes du im Generator 3 gleichzeitig bearbeiten musst, nie mehr als ein paar hundert Bytes im Speicher.

Rolf