Seite 1 von 1
Scriptausführungszeit mit redirect / refresh umgehen
Verfasst: 09.02.2007 22:12
von mgutt
Welche Techniken kann man anwenden, damit ein Script, dass sehr lange läuft immer wieder reloadet?
Ich habe mal versucht mit META refresh, aber das hat dann relativ kurzfristig abgebrochen. Wobei ich aber auch echo-mäßig nichts ausgegeben habe.
Gruß
Verfasst: 09.02.2007 23:23
von OnFire
Du könntest das Script in mehrere Teile aufteilen, die sich dann nacheinander aufrufen, d.H. wenn der erste Teil fertig ist mit einem
Code: Alles auswählen
header("Location:http://www.server.tld/pfad/zu/script.php?daten=für&nächsten=Teil");
den Browser veranlassen, den nächsten Aufzurufen.
Verfasst: 12.02.2007 01:08
von mgutt
Das Problem ist, dass ich dann auf die visuelle Ausgabe komplett verzichten muss. Also ich weiß dann gar nicht, ob das Script noch arbeitet oder vielleicht doch hängen geblieben ist.
Gruß
Verfasst: 12.02.2007 11:26
von OnFire
Nein musst du nicht

du kannst mit ähnlichen Methoden sogar eine Statusanzeige einbauen, die dem User zeigt, wie weit dein Script ist

Und die eigentliche Ausgabe muss dann ja nur im letzten Teil des Scripts stehen. Und dass das Script nicht hängenbleibt ist sowieso selbstverständlich, oder? Wenn es einen Stolperstein gibt, den du nicht beseitigen kannst, solltest du den potentiellen Fehler abfangen. Wenn du willst kannst du ja mal posten um was es genau geht (oder auch per pn), dann kann ich dir da auch en Detail weiter helfen.
Verfasst: 12.02.2007 14:36
von mgutt
Das Script hat das Problem, dass manchmal der SQL-Server die Verbindung kappt. Was er aber komischerweise immer an der gleichen Stelle macht, wenn ich das Script durchlaufen lasse (nach ein paar tausend SQL-Abfragen).
Und es gibt ein Problem, wenn eine SQL-Abfrage nicht erfolgreich ist und der eine Fehlermeldung anzeigt. Dann greift der header nicht, weil er berechtigterweise ausgibt, dass bereits header vorhanden sind (der sql error).
D.h. Du siehst, dass nicht mein Script, sondern eher meine SQL-Datenbank das Problem verursacht. Aber wie kann ich die header-Meldung vermeiden?
Gruß
Verfasst: 12.02.2007 15:33
von mad-manne
Du könntest dir mal
bigdump ansehen, welches eben genau diese Technik verwendet um Timeouts zu umgehen
Lesefutter:
KB:bigdump
Gruss,
Manne.
Verfasst: 12.02.2007 15:34
von OnFire
Kurz und knapp: mit nem @ vor deinem Funktionsaufruf... also
, das funktioniert übrigens mit sämtlichen php-funktionen
Verfasst: 12.02.2007 20:23
von Jensemann
OnFire hat geschrieben:Kurz und knapp: mit nem @ vor deinem Funktionsaufruf... also
, das funktioniert übrigens mit sämtlichen php-funktionen
In solchen Fällen würde ich eher das error-Reporting für das ganze Script unterdrücken. In den AJAX/JSON Backends von Gooba verwende ich dafür:
Verfasst: 13.02.2007 00:37
von Banger
mgutt hat geschrieben:Das Script hat das Problem, dass manchmal der SQL-Server die Verbindung kappt. Was er aber komischerweise immer an der gleichen Stelle macht, wenn ich das Script durchlaufen lasse (nach ein paar tausend SQL-Abfragen).
Hier könnte
mysql_ping() Abhilfe schaffen.
Verfasst: 13.02.2007 00:54
von mgutt
mad-manne hat geschrieben:Du könntest dir mal
bigdump ansehen, welches eben genau diese Technik verwendet um Timeouts zu umgehen
Lesefutter:
KB:bigdump
Gruss,
Manne.
Wunderbar. Dort wirds mit JS gemacht. Habe ich jetzt auch mal probiert.
Gruß