Hallo Sven,
zuerst einmal herzlichen Dank für deine lange und ausführliche Antwort!!
Wenn du mehr Zeit brauchst: Versuche es zuerst mal mit http://de3.php.net/manual/de/function.set-time-limit.php. Funktioniert nicht, wenn dein PHP im Safe-Mode läuft (was es tun sollte, wenn du dir den Server mit anderen Websites teilst.
Hm, ich teile mir den Server aber (leider). Mein Provider Puretec schreibt in seiner FAQ folgendes zu der Problematik (andere Hinweise zu dem Thema gab's dort nicht):
Folgende Einschränkungen sind technisch festgelegt:
- Prozesse dürfen max. 6 Sekunden Rechenzeit beanspruchen
- Prozesse dürfen max. 10 Megabyte Speicher belegen
- es dürfen max. 12 Prozesse gleichzeitig laufen
Bei Überschreitung einer der oben genannten Einschränkungen wird das Skript "getötet". Dieses macht sich durch einen "Internal Server Error (HTTP 500)" oder durch die Fehlermeldung "CGI Limits reached, please try later!" bemerkbar.
Die Rechenzeit von 6 Sekunden bezieht sich übrigens nicht auf die reale Laufzeit, sondern ist abhängig von der tatsächlichen Belastung des Servers.
Beispiel: Beansprucht ein Skript 10 % der Rechenleistung und läuft 2 Sekunden (und das ist schon sehr viel), beträgt die tatsächliche Rechenzeit nur 0,2 Sekunden.
Auch Perl wird kaum länger als 300 Sekunden arbeiten können, würde ich vermuten.
Ich habe eben mal mit dem Perl-Script ein Verzeichnis gepackt. Das erzeugte Zip hatte knapp 6 MB und es dauerte im Durchschnitt 7 Sekunden bis das Zip erzeugt war. Unter der Annahme, dass das Script nicht die komplette Rechenleistung des Servers einnimmt (siehe oben) sollte das doch reichen. Oder habe ich hier etwas nicht bedacht / falsch verstanden?
Wenn ich das so richtig verstanden habe, dann würde ich jetzt mal versuchen wollen, das Perl-Script von PHP aus auszuführen und das Array dabei einzeln zu übergeben.
Das dürfte noch schwieriger werden. Außerdem kostet das deinen Traffic - und zwar doppelt: Einmal zum ZIP einlesen, einmal zum Senden. Und da du hier von Megabytes für die Zusammenfassung sprichst, dürfte die Datenmenge relevant werden. Abgesehen davon kann ich mir vorstellen, dass die anderen solch eine Content-Übernahme nicht so gut finden.
Das habe ich befürchtet! Dann lasse ich den Part erst einmal weg. Zur Content-Übernahme: der andere Server ist auch meiner ;-)
Herzliche Grüsse,
Anja
PS: ich bin der Lösung mittlerweile schon recht nah. Ich test noch etwas und stelle sie hier dann einmal vor.