Script rekursiv aufrufen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Zuletzt geändert von ludwig33; 12.12.2009, 01: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

    Kommentar


    • #3
      Zitat von ludwig33 Beitrag anzeigen
      ...
      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!

      Kommentar


      • #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

        Kommentar


        • #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.

          Kommentar


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

            Kommentar


            • #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.)

              Kommentar


              • #8
                Zitat von combie Beitrag anzeigen
                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

                Kommentar

                Lädt...
                X