Horst Nogajski: Möglichkeit für lange Scriptlaufzeiten ohne set_time_limit()

Beitrag lesen

Hallo Zusammen und vielen Dank für die Antworten,

ich bin ein bißchen faul und antworte mal auf alle Postings zusammen in diesem meinem einen hier, ;-)

Also zu allererst: der Vorschlag von TomIRL ist der der am einfachsten und mit dem wenigsten Aufwand umzusetzen ist. Zuerst habe ich ja befürchtet das das im Safemode auch nicht geht, ähnlich wie set_time_limit(), aber:

  • Die Ausgabe folgenden Scriptcodes:

echo "safe_mode ist: ".(int)ini_get('safe_mode')."<br>";
   echo "max_execution_time: ".ini_get('max_execution_time')."<br><br>";

ini_set('max_execution_time','180');
   echo "max_execution_time nach ini_set('max_execution_time','180'): ".ini_get('max_execution_time')."<br>";

ini_restore('max_execution_time');
   echo "max_execution_time nach ini_restore('max_execution_time'): ".ini_get('max_execution_time')."<br>";

=:)

Zu der Überlegung das es evtl. an der Art der Programmierung liegt kann ich beruhigt sagen das es sich bei dem Script um zwei Klassen handelt die ich selber geschrieben habe (bzw. noch schreibe), von denen die eine (fast) alle möglichen Wünsche die man beim Verzeichnis scannen haben kann erfüllt:
<stolz>optionale Parameterübergaben als Strings oder Arrays, Startverzeichnis(liste), max. Verzeichnistiefe, dateityp(enliste), subfoldername(nliste), basename(nliste), jedes als 'in' oder 'exclude', 'match any' oder 'match all', usw.</stolz>
Das Einzige was noch fehlt ist eine optionale Parameterübergabe per RegExp.

Ein Scann von Laufwerk C: meines _lokalen_ Rechners (P3 600Mhz NT4) z.B.:
über 60.000 gescannte Dateien, passende zum Suchmuster ca. 3.000, Speicherung der Infos im Array und anschliessende Ausgabe an den Browser: Dirname, Basename, Extension, FileDate, Filesize, Friendly_Filesize, URL (falls innerhalb von DocRoot), usw. > dauert ca. 19 Sekunden beim ersten Aufruf. Bei direkter Wiederholung des Scripts dauerts nur ca. 12 Sekunden (liegt wohl daran das die VerzeichnisInfos dann noch im BetriebsSystemCache liegen und kaum Festplattenzugriffe erforderlich sind).

Das Problem warum es so lange dauert ist die Erstellung der Thumbnails wenn man alle oder viele neu erstellen will.
Mit der GD2-Library erzielt man sehr gute Ergebnisse, mit der älteren 1.6x leider nicht. Deshalb verwende ich optional eine Funktion die ich im php-Manual gefunden habe welche unter zu Hilfenahme von mehreren ImageFunktionen eine Bicubic-Umrechnung zu Fuß bewerkstelligt. Die erzielt sehr gute Ergebnisse aber dauert endlos lange.

Und hier kommt der Lösungsansatz von Sven ins Spiel. Wenn man also erstmal alle Verzeichnisse scannt und eine Liste mit den zu bearbeitenden Dateien abspeichert, kann man im 2. Schritt das Script aufrufen um z.B. jeweils eine festgesetze Anzahl Dateien zu bearbeiten. Es müßte doch auch durch ein bißchen Ausprobieren möglich sein im Vorfeld grob die zur Bilderstellung benötigte Zeit anhand von Dateiformat und Dateigröße oder Bildgröße zu kalkulieren, und diesen Wert sowohl für ini_set 'max_execution_time', als auch für einen Browserrefresh mittels META-Tag zu nutzen.

So könnte ich doch evtl. auch ohne Javascript auskommen?
(Das kann ich nämlich nicht).

Während der Scriptabarbeitung könnte man mittels echo und flush Informationen ausgeben. Und natürlich gehört dann auch ein kleines Formular mit Pause-, Weiter, Abbruch-Buttons in die Datei.

Klingt echt cool soweit, jetzt muß ich es nur noch umsetzen, *g*
(hoffentlich funktioniert das auch so)

Viele Grüße,
Horst