AndreR: Text frühzeitig senden

Ich brauche es jetzt zwar noch nicht, dennoch will ich schonmal fragen: Ich habe gerade ja das Script geschrieben, dass dieses foreach enthält (danke nochmal für die Hilfe). Da das Script aber irgendwann ein paar tausend Daten auswerten soll, vermute ich, dass es zu größeren Verzögerungen kommen könnte.

Aus diesem Grunde würde mich interessieren, wie ich vor Scriptbeginn den Text "Bitte Warten..." ausgeben kann, dann das Script läuft und am Ende wird dann über ein Javascript weitergeleitet. Ich habe es schon mit den Buffer-Funktionen versucht, jedoch brachten die, so wie ich sie verwendet habe, keinerlei Erfolg.

Danke schonmal für die Hilfe!

  1. echo $begrüßung;

    Aus diesem Grunde würde mich interessieren, wie ich vor Scriptbeginn den Text "Bitte Warten..." ausgeben kann, dann das Script läuft und am Ende wird dann über ein Javascript weitergeleitet.

    Mal abgesehen von der Formulierung "vor Scriptbeginn" ... vor der langwierigen Berechnung im Script kannst du versuchen, etwas auszugeben und dieses mit flush() zum Client zu befördern. "Versuchen" deshalb, weil flush() nicht auf allen Webserver-PHP-Kombinationen funktioniert und manche Browser gar nicht daran denken, mit der Ausgabe anzufangen, wenn sie meinen, nicht genügend Daten vorliegen zu haben.

    echo "$verabschiedung $name";

    1. Mal abgesehen von der Formulierung "vor Scriptbeginn" ... vor der langwierigen Berechnung im Script kannst du versuchen, etwas auszugeben und dieses mit flush() zum Client zu befördern. "Versuchen" deshalb, weil flush() nicht auf allen Webserver-PHP-Kombinationen funktioniert und manche Browser gar nicht daran denken, mit der Ausgabe anzufangen, wenn sie meinen, nicht genügend Daten vorliegen zu haben.

      Das habe ich schon, aber irgendwie ist die Sache nicht sonderlich erfolgreich. Wie geht man so etwas denn im Normalfall an, dass es definitiv funktioniert?

      1. echo $begrüßung;

        Das habe ich schon, aber irgendwie ist die Sache nicht sonderlich erfolgreich. Wie geht man so etwas denn im Normalfall an, dass es definitiv funktioniert?

        Es gibt für diesen Wunsch kein "Normalfall" und kein "funktioniert definitiv". Dafür ist die Server- und Browserlandschaft zu unterschiedlich, und vorgesehen ist dieser Fall auch nicht. Wenn es geht, dann hast du Glück, wenn nicht, hast du keine Spezifikation, worauf du dich berufen könntest, nachdem es klappen soll.

        echo "$verabschiedung $name";

        1. Es gibt für diesen Wunsch kein "Normalfall" und kein "funktioniert definitiv". Dafür ist die Server- und Browserlandschaft zu unterschiedlich, und vorgesehen ist dieser Fall auch nicht. Wenn es geht, dann hast du Glück, wenn nicht, hast du keine Spezifikation, worauf du dich berufen könntest, nachdem es klappen soll.

          Und wie würdest Du an die Sache rangehen? Mit nem Iframe, dass sich aktuallisiert?

          1. echo $begrüßung;

            Es gibt für diesen Wunsch kein "Normalfall" und kein "funktioniert definitiv". Dafür ist die Server- und Browserlandschaft zu unterschiedlich, und vorgesehen ist dieser Fall auch nicht. Wenn es geht, dann hast du Glück, wenn nicht, hast du keine Spezifikation, worauf du dich berufen könntest, nachdem es klappen soll.

            Und wie würdest Du an die Sache rangehen?

            Wenn ich dich richtig verstanden habe, zeigt deine Webserver-Browser-Kombination keine Daten stückchenweise an, wenn du die in kleinen Häppchen und mit flush() servierst. Wenn das mein bevorzugter Browser wäre, dann begäbe ich mich mit einigen mir geeignet erscheinenden Stichwörtern auf die Suche nach Informationen, wie diesem Browser beizubringen ist, dass er das, was er bis jetzt bereits bekommen hat, ausgeben soll. Voraussetzung ist, dass der Webserver wirklich kleine Häppchen  ausliefert und nicht selbst der Sammler ist. Zur Not nähme ich zur Kontrolle einen Netzwerksniffer, wenn der Browser keine brauchbare Fortschrittsanzeige bietet. Vorher läse ich mir noch die Userkommentare im PHP-Handbuch zur Funktion flush() durch, ob sie nicht bereits Hinweise zu den von mir eingesetzten Programmen liefern.

            Mit nem Iframe, dass sich aktuallisiert?

            Wo soll es denn die Information herbekommen? Soll es ständig Requests nach einer Resource an den Webserver senden, in der die Fortschrittsinformation enthalten ist? Kann funktionieren, wenn dein Vorgang garantiert nur ein solo läuft und nicht gleichzeitig von woanders her angestoßen werden kann, oder die Fortschrittsinformation jeweils eindeutig pro Prozess abrufbar ist.

            Da ich aber praktisch veranlagt bin, und mir das Aussehen von Information ziemlich egal ist (solange es lesbar ist), gebe ich einfach Prozent- oder Anzahl-Wert geflusht aus. Apache mit PHP als Modul oder CGI und Firefox machen mir da keine Probleme. Selbst der IE spielt da mit. Entweder nehme ich dazu einfach text/plain oder wenn es HTML sein muss, lasse ich nach Abarbeitung des Prozesses das HTML-Element in dem die Werte angezeigt werden mit CSS verschwinden. Dabei kommt nicht unbedingt valider HTML-Code raus, aber wenn es für mich persönlich ist, ist mir das egal.

            echo "$verabschiedung $name";