Lange Scriptdauer

Fragen zum Thema HTML, JavaScript, PHP
Benutzeravatar
hackmack
Beiträge: 85
Registriert: Do Mär 26, 2009 10:16 pm

Lange Scriptdauer

Beitrag von hackmack » Fr Mai 21, 2010 7:20 pm

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
They say, if you play a Microsoft CD backwards, you hear satanic messages. Thats nothing, cause if you play it forwards, it installs Windows.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lange Scriptdauer

Beitrag von Xin » Fr Mai 21, 2010 7:33 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
bbbl
Beiträge: 80
Registriert: So Jul 19, 2009 12:04 am

Re: Lange Scriptdauer

Beitrag von bbbl » Fr Mai 21, 2010 7:38 pm

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.

Benutzeravatar
hackmack
Beiträge: 85
Registriert: Do Mär 26, 2009 10:16 pm

Re: Lange Scriptdauer

Beitrag von hackmack » Fr Mai 21, 2010 9:20 pm

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 :D
They say, if you play a Microsoft CD backwards, you hear satanic messages. Thats nothing, cause if you play it forwards, it installs Windows.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lange Scriptdauer

Beitrag von Xin » Fr Mai 21, 2010 9:33 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Dominik
Beiträge: 381
Registriert: Mo Jul 07, 2008 9:39 pm

Re: Lange Scriptdauer

Beitrag von Dominik » Fr Mai 21, 2010 9:47 pm

@hackmack

für solche aufgaben sind Cronjobs da, mittels set_time_limit(0) setzt du die Zeit unbegrenzt


mfg
Rechtschreibefehler sind gewollt und dienen der Unterhaltung

Benutzeravatar
hackmack
Beiträge: 85
Registriert: Do Mär 26, 2009 10:16 pm

Re: Lange Scriptdauer

Beitrag von hackmack » Fr Mai 21, 2010 9:56 pm

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?
They say, if you play a Microsoft CD backwards, you hear satanic messages. Thats nothing, cause if you play it forwards, it installs Windows.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lange Scriptdauer

Beitrag von Xin » Fr Mai 21, 2010 10:09 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Lange Scriptdauer

Beitrag von Kerli » Fr Mai 21, 2010 10:12 pm

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();
}
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
hackmack
Beiträge: 85
Registriert: Do Mär 26, 2009 10:16 pm

Re: Lange Scriptdauer

Beitrag von hackmack » Fr Mai 21, 2010 10:55 pm

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.
They say, if you play a Microsoft CD backwards, you hear satanic messages. Thats nothing, cause if you play it forwards, it installs Windows.

Antworten