• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Fehler 310 Apache

thuemmy

Aktives Mitglied
Folgende Situation. In einem Projekt das ich betreue soll ein Lageplan modifiziert werden (einfärben bestimmter Flächen, bis zu 50). Um einem eventuellen Timeout zu entgehen, habe ich das Script in 3 Teile aufgeteilt.
Script 1: prüfen, ob Änderungen vorliegen, um den Plan neu zu zeichnen, und erstellen einer Arbeitskopie aus dem Originalplan
Script 2: Prüfen, ob noch eine Fläche eingefärbt werden muss, wenn ja, dann mach das und rufe dich selber auf (header("location:sript2.php")), wenn nein, dann Aufruf Script 3.
Script 3: Bild löschen und Arbeitskopie umbenennen.

Derzeitig gibt es 24 Flächen, die eingefärbt werden müssen und es passiert folgendes:
Firefox (19.0.2):
Fehler: Umleitungsfehler

Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

Dieses Problem kann manchmal auftreten, wenn Cookies deaktiviert oder abgelehnt
werden.
Und ich habe die Möglichkeit auf "Nochmals versuchen" zu klicken, wenn ich das mache, dann wird die komplette Routine anstandslos beendt

Google Chrom (25.0.1364.172 m):
Diese Webseite weist eine Weiterleitung auf.

Die Webseite unter http://localhost/ohost/gartenplan2.php hat zu viele Umleitungen erzeugt. Das Löschen Ihrer Cookies für diese Website oder das Zulassen von Drittanbieter-Cookies könnte das Problem möglicherweise beheben. Sollte dies nicht der Fall sein, liegt eventuell ein Serverkonfigurationsfehler und kein Problem mit Ihrem Computer vor.
Vorschläge:



Fehler 310 (net::ERR_TOO_MANY_REDIRECTS): Zu viele Umleitungen.
Wenn ich dann auch "Laden sie diese Website später erneut" klicke, dann wird auch diesmal die komplette Routine sauber beendet.

Internet Explorer (8.0.6001.18702): Der stört sich gar nicht an dem Fehler und beendet die Routine ohne aufzumucken. Komisch, warum wundert mich das jetzt nicht?

Besteht die Möglichkeit, das irgendwie zu verhindern?

Vielen Dank schonmal für das Durchlesen.
 
Ist doch klar, wenn du das gleiche Skript immer wieder aufrufst, irgendwann bricht der Browser ab, er weiß schließlich nicht wie lange es noch weitergehen soll.

Deshalb ist es auch im falschen Forum. Ist kein Server Problem sondern ein PHP (?) Problem, da du meiner Meinung nach dein Programm falsch konzipiert hast.

Ich denke es ist nicht Sinn und Zweck von PHP sich selbst wieder aufzurufen, nur um einem Timeout zu entgehen. Außerdem ließe sich das Script ja dann vom Nutzer beinflussen, in dem er einfach abricht, irgendwann. Bzw. er könnte ja auch zu script3 übergehen, ohne dass die script2 Routine abgeschlossen ist.

Zumindest habe ich noch nie so ein Vorgehen gesehen.

Aber mal schauen was die anderen dazu sagen :)
 
Moin,

Script 2: Prüfen, ob noch eine Fläche eingefärbt werden muss, wenn ja, dann mach das und rufe dich selber auf (header("location:sript2.php")), wenn nein, dann Aufruf Script 3.

Wenn script2.php sich selbst nochmal aufrufen soll, dann übergebe im jedesmal einen anderen Parameter. Am einfachsten einen Timestamp hinten dran.
PHP:
header("location:sript2.php?" . time());

Dann sollte das auch in den anderen Browsern gehen.

MfG

//EDIT
Außerdem ist es nicht besonders schön, wenn das Script sich selbst aufruft, das stimmt wohl. Aber es geht.
Ich würde das mit Ajax lösen und dem Benutzer einen fortschritt anzeigen. Nach dem motto "Flache 1 von x wird gefärbt" oder wir auch immer. Hängt aber von Aufwand und Nutzen ab ;)
 
Vielen Dank erstmal für die Antworten. Das mit dem Timestamp habe ich auch schon versucht (vergessen in meinem Post dazuzuschreiben), aber leider funktioniert auch das nicht. Ich habe jetzt auch mal folgendes probiert: Script2 kopiert in Script2-1. und dann immer wechelseitig aufgerufen. Auch das funktioniert nicht. So wie es scheint, ist nach genau nach dem 20. Redirect Schluss. Ich habe es jetzt erstmal auf die Schnelle so gelöst, dass ich in Script2 immer 5 Flächen einfärbe und danach das Script sich wieder selber aufrufen lasse. Ist zwar auch nicht schön, aber für eine erste Demonstration reicht das :?
 
Oh, ja da kannst du machen was du willst. Bei 20 Redirects ist schluss! Das ist vom Browser so vorgegeben. Bei sovielen redirects ist es auch egal auf welche datei diese verweisen.
Da musst du dir was anderes einfallen lassen.

Firefox:
about:config -> network.http.redirection-limit = 20

MfG
 
Auf die Schnelle würde mir da noch ein Aufruf über system() und die CLI-Umgebung einfallen. Für die CLI kannst du eine eigene php.ini anpassen und auch Fehler bei den Laufzeiten etc abfangen.
 
Zurück
Oben