Seite 1 von 2
Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 7:20 pm
von hackmack
Hallo,
ich habe ein Script, welches mir die Thumbnails der Bilder in meiner Datenbank neu generiert. Dieses kann, je nach Anzahl der Bilder, welche leicht in die Tausende gehen können, eine Weile dauern. In PHP ist allerdings die maximale Ausführungsdauer eines Scripts auf 30 Sekunden begrenzt und ich würde diese Einstellung gerne so lassen. Habt ihr da Ideen, wie ich das machen könnte, ohne, dass mir das Script nach 30 Sekunden abstürtzt?
Mfg.
hackmack
Re: Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 7:33 pm
von Xin
hackmack hat geschrieben:Hallo,
ich habe ein Script, welches mir die Thumbnails der Bilder in meiner Datenbank neu generiert. Dieses kann, je nach Anzahl der Bilder, welche leicht in die Tausende gehen können, eine Weile dauern. In PHP ist allerdings die maximale Ausführungsdauer eines Scripts auf 30 Sekunden begrenzt und ich würde diese Einstellung gerne so lassen. Habt ihr da Ideen, wie ich das machen könnte, ohne, dass mir das Script nach 30 Sekunden abstürtzt?
Kommt drauf an, welche Möglichkeiten Du auf dem Server hast.
Wenn Du das Skript außerhalb der Apache-Umgebung starten kannst, kannst Du Dir die Laufzeit ja auch selbst aussuchen.
Ansonsten kann man sich Gedanken machen, ob man den Job entsprechend serialisieren kann, dass man den Job mehrfach hintereinander aufrufen kann und so Step-By-Step die Bilder aktualisiert werden, z.B. wenn nach 10 Bildern eine Weiterleitung kommt, die den Job für die nächsten 100Bilder startet.
Re: Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 7:38 pm
von bbbl
Versuch doch mal innerhalb deines Scripts über
set_time_limit die maximale Ausführungszeit selbst festzulegen.
Siehe auch:
max-execution-time
Edit: Ach, da hab ich wohl einen Teil überlesen. Ansich stellt es aber kein Problem dar, diese Grenze etwas höher zu legen - du weisst schließlich was du tust. Auch kannst du die Ausführungszeit nur für ein einzelnes Script, in dem Fall dein Thumbnail-Script, festlegen.
Re: Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 9:20 pm
von hackmack
Xin hat geschrieben:
Kommt drauf an, welche Möglichkeiten Du auf dem Server hast.
Ich habe auf dem Server Root-Rechte.
bbbl hat geschrieben:
Versuch doch mal innerhalb deines Scripts über set_time_limit die maximale Ausführungszeit selbst festzulegen.
Siehe auch: max-execution-time
Edit: Ach, da hab ich wohl einen Teil überlesen. Ansich stellt es aber kein Problem dar, diese Grenze etwas höher zu legen - du weisst schließlich was du tust. Auch kannst du die Ausführungszeit nur für ein einzelnes Script, in dem Fall dein Thumbnail-Script, festlegen.
Diese Möglichkeit habe ich auch gelesen. Da allerdings der Benutzer selbst das Script aufruft, müsste er warten, bis dass Script fertig ist, und bekommt solange nichts zu sehen, außer eine weisse Seite.
Xin hat geschrieben:
Ansonsten kann man sich Gedanken machen, ob man den Job entsprechend serialisieren kann, dass man den Job mehrfach hintereinander aufrufen kann und so Step-By-Step die Bilder aktualisiert werden, z.B. wenn nach 10 Bildern eine Weiterleitung kommt, die den Job für die nächsten 100Bilder startet.
Die Idee finde ich ganz gut. Werde mal schauen, was sich da mit Javascript machen lässt - damit könnte man auch eine schöne Prozentanzeige machen

Re: Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 9:33 pm
von Xin
hackmack hat geschrieben:Diese Möglichkeit habe ich auch gelesen. Da allerdings der Benutzer selbst das Script aufruft, müsste er warten, bis dass Script fertig ist, und bekommt solange nichts zu sehen, außer eine weisse Seite.
Hmm... hier würde ich wohl eher einen Task starten und dem Benutzer per tail die Ausgabe senden.
Verlässt der Benutzer die Seite wird sonst ja der Job abgebrochen und das ganze klingt nicht so, als ob der Job damit erledigt ist, nur weil sich der Benutzer nicht mehr für die Ergebnisse interessiert.
Re: Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 9:47 pm
von Dominik
@hackmack
für solche aufgaben sind Cronjobs da, mittels set_time_limit(0) setzt du die Zeit unbegrenzt
mfg
Re: Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 9:56 pm
von hackmack
Dominik hat geschrieben:@hackmack
für solche aufgaben sind Cronjobs da, mittels set_time_limit(0) setzt du die Zeit unbegrenzt
mfg
Nicht unbedingt. Normalerweise werden die Thumbnails für die Bilder beim Hochladen dieser generiert. Allerdings soll der Admin auch die Möglichkeit haben, falls mal etwas durcheinander gekommen ist, alles neu zu generieren. Oder meinst du, dass der Link im Adminbereich sozusagen nur den Cronjob eintragen soll, welcher dann später ausgeführt wird?
Re: Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 10:09 pm
von Xin
hackmack hat geschrieben:Nicht unbedingt. Normalerweise werden die Thumbnails für die Bilder beim Hochladen dieser generiert. Allerdings soll der Admin auch die Möglichkeit haben, falls mal etwas durcheinander gekommen ist, alles neu zu generieren. Oder meinst du, dass der Link im Adminbereich sozusagen nur den Cronjob eintragen soll, welcher dann später ausgeführt wird?
Keinen Cronjob, aber der Link sollte den Job anwerfen.
Re: Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 10:12 pm
von Kerli
hackmack hat geschrieben:Da allerdings der Benutzer selbst das Script aufruft, müsste er warten, bis dass Script fertig ist, und bekommt solange nichts zu sehen, außer eine weisse Seite.
Nicht unbedingt. Es gibt immer noch 'flush()'. Du kannst damit zwar nicht wie mit Javascript die Ausgabe animieren, aber du kannst damit zb. zeilenweise den Output ähnlich wie in einer Konsole anzeigen lassen:
Code: Alles auswählen
while( !finish )
{
<insert work here>
echo $status_message;
flush();
}
Re: Lange Scriptdauer
Verfasst: Fr Mai 21, 2010 10:55 pm
von hackmack
Xin hat geschrieben:Keinen Cronjob, aber der Link sollte den Job anwerfen.
Dann habe ich aber keine Möglichkeit zu kontrollieren, wie weit der Fortschritt ist, außer ich mache auch wieder was mit Javascript.