header Umleitung

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

  • header Umleitung

    Hallo,

    wie ist das eigentlich mit dem
    header() Befehl?
    Werden die Befehle nach header(...) in
    einem Script auf jeden Fall noch abgearbeitet,
    oder ist das wieder mal eine PHP-Einstellung.

    Wird die Ausgabe von header, sofort an den Browser
    geschickt, oder auch erst gepuffert, und am Ende
    des Scriptes geschickt?

    Grund:
    In meinen Scripten soll er einiges noch machen,
    nachdem der User per header("Location: ...")
    auf eine andere Seite verwiesen wurde.
    Insbesondere sollen log-Einträge geschrieben,
    Mails gesendet, ... werden ohne das der User
    erst auf deren Abarbeitung warten muß
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

  • #2
    hmm, also ich hab auch nachm header immer onch n paar mysql anweisungen, und die werden eigentlich auch immer abgearbeitet, ich weiss aber nicht, ob wenn man flush() oder sowas macht, dann danach immer noch gearbeitet wird..
    meine Projekte bestaunen: http://www.kleiza.de

    Kommentar


    • #3
      normalerweise mache ich nach der Umleitung ein exit();

      also:
      header("location:bla.de");
      exit();

      wenn noch sachen vor der umleitung gemacht werden sollen, dann setz sie vor den header (mails versenden sollte gehen), es darf halt nur keine Ausgabe an den Client erfolgen, alles andere ist egal!

      gruss

      Kommentar


      • #4
        zur Zeit habe ich auch einiges so:

        header("Location: ...");
        // einige SQL Abfragen
        // Mails senden
        exit();

        nun ist aber meine Frage, ob das immer
        funktioniert und der User bereits
        weitergeleitet ist, oder ob da noch ein flush()
        rein sollte.

        Auch wenn der Code dadurch nicht schneller wird,
        ist die Abarbeitung für den User schneller,
        da er nicht immer warten muß.
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar


        • #5
          also ich glaube, eine garantie gibt es für die ausführung nach dem header() nicht!

          im manual wird empfohlen, nach dem header() ein exit; zu setzen, um das eventuelle ausführen weiteren codes zu verhindern!

          wenn noch sachen vor der umleitung gemacht werden sollen, dann setz sie vor den header
          ganz genau!
          GNU/LINUX

          Kommentar


          • #6
            und das funktioniert so ?

            flush bringt dir nichts, du willst ja nichts ausgeben, sondern weiterleiten.

            erledige alles vor dem Redirect.

            exit übrigens ohne ()! sorry

            laut manual.
            header ("Location: http://www.example.com"); // Umleitung des Browsers
            exit; // Sicher stellen, dass nicht trotz Umleitung nachfolgender Code ausgeführt wird.

            und vorher alle bearbeitungen. Wie lange aber der User warten muß, kommt darauf an, wie schnell der Server ist, aber theoretisch sollte er davon nichts merken, außer du erstellst riesige Textdateien, etc.

            gruss

            Kommentar


            • #7
              leider isses nicht immer möglich den code vor der header zu setzen, bei mir kommt oft darauf an, wie die _get parameter gesetzt sind..
              aber ich mal oft mail usw verschickt und user in die DB eingetragen nach dem header, und bisher hat sich keiner beschwert

              TBT: der code im der datei mit der weiterleitung wird eigentlich VOR dem aufbau der neuen seite gemacht, sprich, eigentlich direkt machdem klick auf den link,(darum wird auch oft gesagt " nur einmal auf den reply knopf drücken, weil es vorkommt, das es etwas dauer, bis die daten gespeichert werden.)

              BTW: 400 posting
              Zuletzt geändert von Campus; 07.10.2002, 13:03.
              meine Projekte bestaunen: http://www.kleiza.de

              Kommentar


              • #8
                @MoRtAlan:

                Sorry
                www.php.net

                The exit() function terminates execution of the script. It prints status just before exiting
                eine Funktion, also mit ()

                Ich will einfach die Wartezeit für den User verkürzen
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  was hast du denn bisher ?
                  content=0.... ?
                  meine Projekte bestaunen: http://www.kleiza.de

                  Kommentar


                  • #10
                    eine Funktion, also mit ()
                    stimmt,!

                    funzt aber auch ohne () und hat sich irgendwie so eingebürgert ... komisch!
                    GNU/LINUX

                    Kommentar


                    • #11
                      Original geschrieben von Campus
                      was hast du denn bisher ?
                      content=0.... ?
                      wie jetzt, was meinst du
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar


                      • #12
                        Original geschrieben von TBT

                        Ich will einfach die Wartezeit für den User verkürzen
                        was meinst du damit verkürzen ? wie has du es jetzt ?
                        meine Projekte bestaunen: http://www.kleiza.de

                        Kommentar


                        • #13
                          irgendwie herrscht hier gerade ein bisschen Chaos

                          @tbt: ich hatte ja zuerst exit() geschrieben und dann sah ich das gepostete Beispiel aus dem Manual ohne das (). Da hab ich mir halt gedacht, die werden schon recht haben

                          gruss

                          Kommentar


                          • #14
                            Beispiel:

                            - das Script wird abgearbeitet
                            - am Ende des Scriptes schreibt er noch nen bissel Logdateien
                            - außerdem werden 2 Emails versendet
                            - dann kommt die Headerumleitung header();
                            - exit();


                            nun will ich aber, das der User schneller auf die neue Seite kommt,
                            und der Rest (Log und Emails) abgearbeitet wird,
                            ohne das der User drauf warten muß

                            also:

                            - das Script wird abgearbeitet
                            - dann kommt die Headerumleitung header();
                            => hier soll der User schon weg sein (neue Seite sehen)
                            - am Ende des Scriptes schreibt er noch nen bissel Logdateien
                            - außerdem werden 2 Emails versendet
                            - exit();

                            die Frage ist, klappt das immer, oder gibt es andere
                            Möglichkeiten was zu abzuarbeiten, ohne das
                            der User drauf warten muß
                            TBT

                            Die zwei wichtigsten Regeln für eine berufliche Karriere:
                            1. Verrate niemals alles was du weißt!


                            PHP 2 AllPatrizier II Browsergame

                            Kommentar


                            • #15

                              nun will ich aber, das der User schneller auf die neue Seite kommt,
                              und der Rest (Log und Emails) abgearbeitet wird,
                              ohne das der User drauf warten muß
                              entsteht dadurch tatsächlich eine merkliche verzögerung?
                              kann ich mir nicht vorstellen, es sei denn die log's sind riesig ....
                              GNU/LINUX

                              Kommentar

                              Lädt...
                              X