Script rekursiv aufrufen?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Script rekursiv aufrufen?

    Hallo zusammen,

    ich möchte mehrere Scripte rekursiv aufrufen und starte mit dem ersten Aufruf von 1.php.
    Ab $_SESSION['status'] > 8 steigen Firefox und IE aus mit einem Fehler.
    1.php
    PHP Code:
    session_start();
    $_SESSION['status'] += 1;

    if (
    $_SESSION['status'] > 5) {
        
    var_dump($_SESSION);
        
    session_destroy();
    } else {
        
    header("Location: http://www.meinedomain.de/2.php");
    }
    exit; 
    2.php
    PHP Code:
    // Test-Script 2
    header("Location: http://www.meinedomain.de/3.php");
    exit; 
    3.php
    PHP Code:
    // Test-Script 3 - zurück zum Anfang :-)
    header("Location: http://www.meinedomain.de/1.php");
    exit; 
    Was kann ich tun damit das Script öfters läuft?

    Grüße
    Ludwig
    Last edited by ludwig33; 12-12-2009, 00:15.

  • #2
    Alle Browser verhindern eine infinite weiterleitungs Rekursion.
    Evtl. solltest du auf einen Meta, oder gar http1.2, Refresh umsteigen.

    Wozu braucht man sowas?
    Wir werden alle sterben

    Comment


    • #3
      Originally posted by ludwig33 View Post
      ...
      Was kann ich tun damit das Script öfters läuft?
      Es öfters aufrufen?
      Im Ernst: Welches Script? Du hast ja mehrere angegeben ...

      Ich würde es an deiner Stelle mal damit versuchen, an den|die Script-URL einen Parameter anzuhängen (ein Zähler oder eine Zufallszahl). Aber auch ich kann mir beim besten Willen nicht vorstellen, wozu man sowas braucht.
      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

      Comment


      • #4
        Danke für die Info's. Auf dieses Problem mit der Rekursion bin ich vor kurzem gestoßen und habe das auf diese drei Mini-Dateien reduziert, um den Fehler einzugrenzen.

        Es war einmal ein PHP-Script welches, je nach Aufrufparametern, eine CSV-Datei einliest, einige Funktionen und Berechnungen macht und die Ergebnisse in eine Datenbank schreibt. Nun wurde dieses um ein zweites Script erweitert, welches neue CSV-Dateien in das alte Format konvertiert und anschliessend per header:Location das alte Script aufruft. Auch hier gibt es Übergabeparameter, so daß es 8 verschiedene Varianten gibt. Vermutlich wurde dies auch aus Laufzeitgründen gemacht, da die CSV-Dateien manchmal schon groß werden können.

        Nun soll zum guten Schluss noch ein drittes Script "davor" gesetzt werden, um alle 8 Varianten automatisch nacheinender aufzurufen. Die ersten beiden Scripte sollen möglichst nicht/wenig geändert werden.

        So ist also die Kette

        1.php ---> 2.php ---> 3.php ->
        ^
        |
        ---------------<-----------

        entstanden, welche leider nicht funktioniert, wie das kleine Beispiel zeigt.

        Tja, es geht halt nix über gewachsene Software. Thats Live, es ist weder Geld noch Zeit da alles neu zu schreiben und das bisherige System soll ja ungestört weiterlaufen...
        Wenn ich die Teile nun kopiere und erweitere muss ich bei Änderungen immer zwei Versionen pflegen, was in der normalen Hektik sicher oft vergessen wird.

        Grüße
        Ludwig

        Comment


        • #5
          Dann würde ich nicht per Location-Header weiterleiten, sondern es mal per Meta-Tag im HTML versuchen.

          (Da die Browser dabei immer wieder „ganz normale” Dokumente unter dem Statuscode 200 erhalten, gibt es hier keinen Grund, nach einer gewissen Anzahl auszusteigen. Lediglich dass diese Art von Weiterleitung aktiviert ist (im Browser), wäre bei diesem Vorgehen dann Minimalanforderung.)
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Comment


          • #6
            Habe ich schon versucht zu sagen.
            Kommt nicht an.
            Wir werden alle sterben

            Comment


            • #7
              Erstens hat das hier überhaupt nichts mit Rekursion zu tun.
              Zweitens machen die Browser das nicht lange mit, weil du immer wieder die auf die gleiche URL weiterleitest. Häng mal den Session-Counter als GET-Parameter an. Das sollte dein Problem schon lösen.
              Drittens besteht kein Zwang, die Dateien einzeln aufzurufen. Du könntest alle historisch gewachsenen Erweiterungen per include in die Ursprungsdatei laden, je nach übergebenen Parametern. Dann musst du überhaupt nicht weiterleiten. (... aber vielleicht auf max_execution_time achten.)

              Comment


              • #8
                Originally posted by combie View Post
                Habe ich schon versucht zu sagen.
                Kommt nicht an.
                Doch, ist jetzt angekommen. Sorry, manchmal ist es nicht einfach das Brett vor dem Kopf zu zerkloppen.

                Mit dem Tausch von header zu meta refresh funktioniert es auf Anhieb.

                @onemorenerd
                Der Tipp mit den includes ist auch gut, danke. Evtl. werde ich das auch mal testen.

                Grüße
                Ludwig

                Comment

                Working...
                X