Für Sepia (In Arbeit.... ) schreibe ich gerade eine Erweiterung, eine Art serialize() und Exportfunktion für einzelne (oder mehrere) Datensätze innerhalb des CMS.
Das heißt, man kann einzelne Datensätze (z.B. Inhaltsseiten) mit allen relevanten Informationen (Erstellungsdatum, Ort in der Baumstruktur, Name, Rechtedatensatz, Ersteller, Darstellungsoptionen) exportieren und bekommt einen Download angeboten, den man dann in einer anderen Sepia-Installation wieder einspielen kann, nicht unähnlich einem SQL-Dump, aber komplexer, weil bis zu 4 Tabellen involviert sind: Der Datensatz selbst, die administrative Seite, die Rechtetabelle und eventuell die zur referentiellen Integrität.
Soweit so machbar.
Jetzt ist es aber so, daß an einem solchen Datensatz Dateien hängen können, z.B. hochgeladene Bilder. Diese müssen mit in den Download gepackt werden, sonst hat die Funktion kaum praktischen Wert.
Es muß eine Datei dabei rauskommen, die ich dann PHP-Seitig wieder auseinandernehmen kann. Kompression ist erstmal zweitrangig.
Die Frage ist nun: Wie gestalte ich das Zusammenpacken mehrerer Dateien mit unbekannter Dateigröße so, daß auch große Mengen von Dateidaten das Memory-Limit nicht sprengen?
Also, kennt ihr eine Methode, mit der ich mehrere Dateien hintereinander öffnen, alle in einem Dateioutput als Download durchschleifen und beim späteren Upload dann wieder auseinanderdröseln kann, unter Nutzung der Dateizeiger, sodaß mein Speicher nie überläuft?
Verpackungsfunktionen wie serialize() kann ich hier ja nicht nutzen, weil diese am Memory-Limit scheitern würden, spätestens wenn eine einzelne Datei größer ist als das Memory-Limit - mit dem Fall muß gerechnet werden, Sepia ist ein sehr robustes System und alles was dazukommt, muß genauso robust sein.
Ist das Problem einigermaßen klar formuliert?
Hat jemand Ideen / Ansätze?
Am ehesten wirds wahrscheinlich etwas sein, was die Dateien hintereinander ausgibt und durch einen vorher festgelegten String trennt. Dafür gibts bestimmt schon was fertiges, was die ganzen Klippen (Kodierungen / CR/LF / und so weiter) schon umschifft hat?
Gibt es ein einfaches Stichwort zum Googeln, auf das ich nicht komme?
Das heißt, man kann einzelne Datensätze (z.B. Inhaltsseiten) mit allen relevanten Informationen (Erstellungsdatum, Ort in der Baumstruktur, Name, Rechtedatensatz, Ersteller, Darstellungsoptionen) exportieren und bekommt einen Download angeboten, den man dann in einer anderen Sepia-Installation wieder einspielen kann, nicht unähnlich einem SQL-Dump, aber komplexer, weil bis zu 4 Tabellen involviert sind: Der Datensatz selbst, die administrative Seite, die Rechtetabelle und eventuell die zur referentiellen Integrität.
Soweit so machbar.
Jetzt ist es aber so, daß an einem solchen Datensatz Dateien hängen können, z.B. hochgeladene Bilder. Diese müssen mit in den Download gepackt werden, sonst hat die Funktion kaum praktischen Wert.
Es muß eine Datei dabei rauskommen, die ich dann PHP-Seitig wieder auseinandernehmen kann. Kompression ist erstmal zweitrangig.
Die Frage ist nun: Wie gestalte ich das Zusammenpacken mehrerer Dateien mit unbekannter Dateigröße so, daß auch große Mengen von Dateidaten das Memory-Limit nicht sprengen?
Also, kennt ihr eine Methode, mit der ich mehrere Dateien hintereinander öffnen, alle in einem Dateioutput als Download durchschleifen und beim späteren Upload dann wieder auseinanderdröseln kann, unter Nutzung der Dateizeiger, sodaß mein Speicher nie überläuft?
Verpackungsfunktionen wie serialize() kann ich hier ja nicht nutzen, weil diese am Memory-Limit scheitern würden, spätestens wenn eine einzelne Datei größer ist als das Memory-Limit - mit dem Fall muß gerechnet werden, Sepia ist ein sehr robustes System und alles was dazukommt, muß genauso robust sein.
Ist das Problem einigermaßen klar formuliert?
Hat jemand Ideen / Ansätze?
Am ehesten wirds wahrscheinlich etwas sein, was die Dateien hintereinander ausgibt und durch einen vorher festgelegten String trennt. Dafür gibts bestimmt schon was fertiges, was die ganzen Klippen (Kodierungen / CR/LF / und so weiter) schon umschifft hat?
Gibt es ein einfaches Stichwort zum Googeln, auf das ich nicht komme?
Kommentar