Timeout im PHP-Script

webber

Aktives Mitglied
Hallo Ayomer,

brauche dringend eine Lösung für mein Problem.

Ich habe eine PHP-Script geschrieben das auf dem Server einen Ordner (gefüllt mit Bilddateien) ausliest und Datei für Datei abarbeitet.
In einer While-Schleife passiert folgendes:
Erste Datei aus Ordner holen, Höhe und Breite auslesen, neue Höhe bzw. Breite anpassen und in einem bestimmten Ordner wieder ablegen.

Bis dahin kein Problem, aber nach ca. 10 Bildern gibt es ein PHP-Timeout und bricht mitten drin ab. Auf dem Server ist ein Timeout von 30sec angegeben und kann auch nicht mit set_timeout_limit neu gesetzt werden.

1.) Gibt es eine andere Möglichkeit diesen Timeout zu umgehen bzw. abzufragen
2.) habe schon von sleep(x) gehört -> kling aber nicht logisch da die Zeit ja weiterläuft und ein weiteren Timeout erzeugt - oder denke ich da falsch?
3.) habe von Socket-Funktionen gehört und gelesen, aber immer nur im zusammenhang mit Daten von anderen Servern bzw. Rechnern holen.

Ich denke viele kennen den OpenSource PHP-Mailer, wie macht der das, das er viele 1000 Mails verschicken kann. Wenn man ihn bei der arbeit sieht stellt man fest das er eine unterbrechung nach ca. 25 Mails vornimmt und weiterläuft also ohne Timeout.

Bitte um Eure Hilfe
viele grüße webber

 
Danke für die schnelle Anwort,

aber das habe ich bereits geschrieben das diese Funktion nicht bei meinem Server funktioniert. Hatte mich aber verschrieben statt set_time_limit habe ich set_timeout_limit geschrieben.

Sorry und danke
 
warten erreichst du mit sleep ansonsten schau mal in der php.ini nach da kannst du dein timeout auch noch einstellen
 
also ich möchte ja auch mal behaupten das sleep irgendwie völlig falsch ist.

Das einzige was du meiner Meinung nach machen kannst:

Das Skript ruft sich einfach immer wieder nach X Bearbeitungsschritten neu auf.
Also wenn X Bilder bearbeitet sind ruft das Skript sich selbst mit einer Variablen auf damit es weiss wo es weiter machen muss und arbeitet dann wieder X Bilder ab bis es sich wieder neu aufruft.

So macht das z.b. auch phpmyadmin beim export von großen Dateien (soweit ich das mal gehört habe) und php Mailer nach deiner Beschreibung offenbar auch.

Webbasiert kannst du das evtl. in einem iframe machen oder per Ajax immer wieder neu aufrufen oder in der Konsole das Skript direkt neu aufrufen.

Was besseres fällt mir auf die schnelle nicht ein.
 
QUOTE Das Skript ruft sich einfach immer wieder nach X Bearbeitungsschritten neu auf.
Also wenn X Bilder bearbeitet sind ruft das Skript sich selbst mit einer Variablen auf damit es weiss wo es weiter machen muss und arbeitet dann wieder X Bilder ab bis es sich wieder neu aufruft.


Da würde ich auch zu tendieren denke ich. Scheint mir das einfachste zu sein *g*
 
... Danke erst einmal an alle ...

ich werde nach x Schleifendurchgängen die Seite neu laden ... aber da ist schon das nächste Problem.

Seite neu laden habe ich versuch mit:

header("location: http://www.meineseite.de");

aber Fehlermeldung:

Warning: Cannot modify header information - headers already sent by ...

was mache ich falsch ... heute wills einfach nicht klappen ...

Gruß webber
 
exec, system (falls auf dem Server erlaubt) verwenden.

Ansonsten a) keine Header vorher senden (also keinerlei Ausgabe machen) oder b) mit einem <meta>-Tag neuladen.
 
QUOTE
Warning: Cannot modify header information - headers already sent by ...

was mache ich falsch ... heute wills einfach nicht klappen ...


Die header()-Funktion darf auf keinen Fall nach einem "echo" kommen... sobald du *irgendwo* ein echo() vor der funktion hast funktioniert das nicht mehr.
 
... habe leerzeichen und echo-Befehl vorher ausgeführt ... super, jetzt klapps erst mal.

Danke an alle
webber
 
Zurück
Oben