Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] echo vor schleife

Einklappen

Neue Werbung 2019

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

  • [Erledigt] echo vor schleife

    Hallo,
    ich habe ein ziemlich simples Problem, aber ich bekomme das Problem nicht gelöst.

    Ich habe eine Funktion gebaut die mir Bilder bearbeitet, meine while-schleife läuft also eine ganze Weile bis sie alles durch hat.

    Ich würde jetzt aber gerne ein echo 'bearbeitung hat begonnen'; auf den Browser zaubern, aber das Problem ist, dass wenn ich die Seite aufrufe, es läd läd läd und dann wird direkt ausgespuckt, bearbeitung hat begonnen und bearbeitung fertig.

    Fragestellung: Ist es möglich, im Browser ein Text auszugeben und danach startet dann erst die Schleife ?

  • #2
    http://php.net/manual/de/function.flush.php

    Kommentar


    • #3
      Schön wäre es noch, wenn die Meldung "bearbeitung hat begonnen" bei Fertigstellung auch wieder verschwinden würde. Das wird hier gelöst.

      Kommentar


      • #4
        Das geht auch ohne JavaScript, so lange wirklich nur der Status als Text ausgegeben wird. Aus den Beispielen in der Dokumentation zu flush:
        PHP-Code:
        <?php
          header
        ('Content-type: multipart/x-mixed-replace;boundary=endofsection');
          print 
        "\n--endofsection\n";

          
        $pmt = array("-""\\""|""/" );
          for( 
        $i 0$i <10$i ++ ){
              
        sleep(1);
              print 
        "Content-type: text/plain\n\n";
              print 
        "Part $i\t".$pmt[$i 4];
              print 
        "--endofsection\n";
              
        ob_flush();
              
        flush();
          }
          print 
        "Content-type: text/plain\n\n";
          print 
        "The end\n";
          print 
        "--endofsection--\n";
        ?>
        Server Push with "multipart/x-mixed-replace", tested on Firefox 1.07.
        This is an example requiring both ob_flush and flush.
        Quelle

        Kommentar


        • #5
          Zu multipart/x-mixed-replace:
          Originally developed by Netscape,[6] it is still supported by Mozilla, Firefox, Chrome,[7] Safari (but not in Safari on the iPhone)[citation needed] and Opera, but traditionally ignored by Microsoft. It is commonly used in IP cameras as the MIME type for MJPEG streams.[8]
          http://en.wikipedia.org/wiki/MIME#Mi...xperimental.29

          Kommentar


          • #6
            Alternativ kannst du auch dem Script das bestimmte Zustände darstellen soll auch mehrere Actions verpassen, ohne benannte Action lädt die Seite ein HTML-Gerüst das wiederum AJAX-Anweisung enthält ( bei knopfdruck oder nach fertigem Laden der Seite ) die ersten Action anzustoßen. Bei der Methode kannst du dann Crossbrowser-Kompatibel soviele oder sowenige Zustände auf einer Seite darstellen wie du nur willst, sie verschwinden lassen oder von mir aus auch ein Minispiel implementieren, das der User nebenbei spielen kann.

            Kommentar


            • #7
              Vielen dank für die zahlreichen Lösungsansätze, ich bin nur leider unfähig den flush(); richtig einzubinden und die User-Notes bringen mich auch nicht weiter.
              Vielleicht könnt ihr mir einen Tipp geben wo ich mit dem flush(); ansetzen muss, ich habe glaube ich schon alle Möglichkeiten durchprobiert.
              Mein Functionsaufbau:
              die index.php :
              PHP-Code:
              include ('Bilder.php');
              set_time_limit(3600);
              Bilder(1000); 
              die Funktion ist folgendermaßen aufgebaut:
              PHP-Code:
              $verz opendir('.');
              while(
              false !== ($bild readdir($verz))){
              if  
              // eine überprüfung ob die datei verarbeitet werden soll
              {    // bei true 
              switch {} // hier kommt die bearbeitung der Bilder
              }

              wo setze ich das flush(); an ? Das mir entweder ganz am Anfang die Meldung 'start' auf meinen Bildschirm gezaubert wird, oder das ech von jedem switch ?

              Kommentar


              • #8
                Flush nach jeder Ausgabe, die zum Zeitpunkt des Durchlaufens von Flush direkt geliefert werden soll.

                Kommentar


                • #9
                  Das ist wie ne Klospülung: Wenn die Schüssel (= Ausgabepuffer) voller wird, spülen (flush)! Im Gegensatz zum heimischen Klo wird der Ausgabepuffer aber auch automatisch geflushed, wenn er droht überzulaufen...

                  Kommentar


                  • #10
                    so also ich habe es jetzt hinbekommen das es mir die echos rausspült wie istegtitz so schön beschrieben hat, aber das passiert erst ab einer bestimmten Anzahl an Bildern.
                    Die Funktion läuft lokal mit xampp.
                    Hat jemand einen Vorschlag wie ich meinen Ausgabepuffer so einstellen kann, dass es direkt loslegt und nicht erst "überlaufen" muss ?

                    Kommentar


                    • #11
                      Mit flush, wie oft denn noch?! Dass die Bilder erst geladen werden müssen, dürfte Dir klar sein..

                      Kommentar


                      • #12
                        .. und im Manual stehen Hinweise zum "Pufferverhalten des Webservers oder des Browsers auf der Clientseite".

                        Kommentar


                        • #13
                          danke nikosch ich bin nicht ganz so dumm und wie gesagt habe ich es hinbekommen das es funktioniert, ich wollte jetzt nur noch erreichen, dass es direkt loslegt und nicht erst nach 10bearbeiteten bildern anfängt jedes echo auszuspielen.

                          ja ich bin im mom am durchtesten der hinweise vom manual, wenn ichs hinbekommen hab meld ich mich nochmal

                          Kommentar


                          • #14
                            Im IE sowie im FF 4 Stellt der der Browser die Webseite erst ab ein paar KB dar, vorher gibt er nichts aus.

                            Einfach am Anfang mal ein paar Leerzeichen "Flushen"... hängt hier also nicht mit PHP zusammen, sondern mit deinen Browser. Versuchs mit nem anderen / andere Version und es Funktioniert, wie gewollt.

                            Kommentar


                            • #15
                              Soooo, also habs jetzt hinbekommen,
                              echo 'paar leerzeichen';
                              danke für den Tipp Teo, jetzt spuckts mir meine echos direkt aus, wie gewünscht

                              Kommentar

                              Lädt...
                              X