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 :wink:

Lesefutter: KB:bigdump

Gruss,
Manne.

Verfasst: 12.02.2007 15:34
von OnFire
Kurz und knapp: mit nem @ vor deinem Funktionsaufruf... also

Code: Alles auswählen

@mysql_query($query_string);
, 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

Code: Alles auswählen

@mysql_query($query_string);
, 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:

Code: Alles auswählen

ini_set("display_errors", "false");

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 :wink:

Lesefutter: KB:bigdump

Gruss,
Manne.
Wunderbar. Dort wirds mit JS gemacht. Habe ich jetzt auch mal probiert.

Gruß