Buffering, Flush, Sleep = Problem

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

  • Buffering, Flush, Sleep = Problem

    Hallo zusammen, bin bei der Socketgeschichte dran und würde ja sehr gerne sehen was mein Server macht, ich führe den server nicht unter Linux aus, sondern zum testen über den IE 6.0 und Firefox.

    Dabei ergab sich das Problem, das die Ausgaben nicht erscheinen, weil der Puffer nicht geleert wird.

    um das nicht komplex werden zu lassen, habe ich mich auf ein minimales Beispiel berufen, das mein problem aufweist:

    PHP-Code:

    <?php

    // Flushtest 1

    ob_implicit_flush(1);
    $count=0;
    while(
    1){

        echo 
    "<br>".$count;

        
    $count++;
        
        
    ob_flush();
        
    flush();

    }

    ?>
    Gewünscht ist das ganze allerdings mit usleep(5000); noch drinnen

    Ich bekomme keine Ausgaben, beim allerersten Aufruf, da ging es, da ratterte er alles durch, aber weiss nichtmehr ob das der code dazu war, hab zuviel rumgefummelt. Allerdings hatte ich bei dem Code wo es ging dann usleep(5000) eingefügt und da ging er schon direkt mal nichtmehr.

    Habe zudem an allen möglichen stellen al ob_start_flush und ob_end und all sowas hingepflanzt, aber auch keine Änderung.

    Kann sowas auch von den EInstellungen des Servers abhängig sein?
    Kann das an den Einstellungen im IE6 oder Firefox liegen?

    Bitte um Rat und Hilfe

    Danke

  • #2
    du benutzt die völlig falschen Befehle. die ob_ -Befehle sind PUFFER, und diese habe die Eigenschaft Dinge NICHT auszugeben, solange du diesen nicht beendest.
    So wirds funktionieren, und so isses auch gedacht (allein schon dein Anfang ist völlig sinnlos):
    PHP-Code:
    ob_start();
    blablablablabla  
    blubb    
    ob_get_contents
    (); // wenn du VOR dem Ende des Puffers auslesen willst   
    ob_end_flush(); // Hier wird der Inhalt NACH dem Puffer ausgegeben 
    dein Code (?) da oben beendet zuerst einen nicht existenten Puffer (!!) und schaltet die Ausgabe ein (sinnlos). Ich sehe, dass du nicht wirklich ein Verständnis für PHP hast... musst noch mehr üben UND dich mit ECHTEN (!!) Servern beschäftigen. Dein Heim-PC mit Apache drauf usw. ist kein Server. Ein Server steht in nem Rechenzentrum und hat ne sehr spezielle Hardware. Ausserdem stellt ein Client-Apache keine wirklich reale Testumgebung dar, fast alle Webspaces und Rootserver sind komplett anders konfiguriert da müsstest du umlernen. Hol dir nen kostenlosen Webspace und teste dort, da haste dann reale Umgebungen
    Zuletzt geändert von tha_specializt; 05.07.2006, 12:58.

    Kommentar


    • #3
      Es würde reichen, wenn du einem hilfst und nicht angreifst, denn dir hab ich nix getan.

      Danke.

      Kommentar


      • #4
        Original geschrieben von progman06
        ich führe den server nicht unter Linux aus, sondern zum testen über den IE 6.0 und Firefox.


        Original geschrieben von progman06
        Es würde reichen, wenn du einem hilfst und nicht angreifst, denn dir hab ich nix getan.
        blah blah blah. solche posts kannst du getrost unterlassen, wenn man versucht dir zu helfen!
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          pf, er wird angreifend und macht einen auf klugscheisser, dabei hat er nichtmal meine Frage korrekt beantwortet

          Kommentar


          • #6
            Das er mir die zahlen runterrattert, das habe ich wie ich oben beschrieben habe auch hinbekommen gehabt.


            Denn ich möchte

            PHP-Code:
            usleep(5000); 

            hier mit rein haben

            PHP-Code:

            $count
            =1;
            while(
            1){
                
            ob_start();
                echo 
            "<br>".$count;

                
            $count++;
                
                
            //ob_get_contents(); // wenn du VOR dem Ende des Puffers auslesen willst
                
            ob_end_flush(); // Hier wird der Inhalt NACH dem Puffer ausgegeben


            Sobald dort an welcher Stelle auch immer aber das usleep eingesetzt wird, läd er ohne ende und ohne ausgaben.

            php.net

            Kommentar


            • #7
              weil er das sleep dann mitbuffert...yo


              und welche alternativen gibt es dazu dann?

              hatte überlegt die ausgabe und das sleep seperat zu buffern


              aber funzt auch nicht.

              Kommentar


              • #8
                Kinders.... erklärt mir mal, wie ihr eine PAUSE anzeigen lassen wollt. Wie sieht eine Pause denn aus? Was macht man währenddessend und vor allem: WIE LANGE DAUERT DIE??



                Mannmannmann... da fragt man sich noch warum aktuelle Websites und deren Scripts so schlecht sind.

                Kommentar


                • #9
                  ja sollte er nicht innerhalb der while-schleife NACHDEM er den buffer ausgelesen hat die Pause einbauen?

                  oder steht ich jetzt auch auf dem schlauch?
                  Habe sowas noch nie gebraucht

                  Kommentar


                  • #10
                    @topicstarter:
                    Läuft der Server also unter Windows ? Dann vergiss usleep(). Exisitert auf Win gemäss Manual nicht.
                    Und wenn du anstelle dessen sleep() verwendest, dann beachte, dass diese Fkt die Pause in Sekunden macht und nicht in Microsekunden. Du hast nicht zufällig bereits sleep() verwendet und wunderst dich, dass der Server für 5000 Sekunden eine Pause einlegt ?

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      mich wundert allerdings, dass er kein "function does not exist" bekommen hat.... Seine Fragestellung ist an sich sehr seltsam und auch fehlerhaft (Server unter IE??? HÄÄ??)

                      Tip an den Topicersteller:

                      Lad dir VMWare runter, installiere darauf Linux, installiere Apache (nicht den 2er bitte) + PHP, und teste deine Script dann dort. Eine Unix-Umgebung ist weitaus realistischer, performanter und sicherer als jeder Windoof-Server. Fakt. Dort bekommt man wenigstens auch gescheite Fehlermeldungen (!!)

                      Kommentar


                      • #12
                        Original geschrieben von tha_specializt
                        Lad dir VMWare runter, installiere darauf Linux, installiere Apache (nicht den 2er bitte) + PHP, und teste deine Script dann dort. Eine Unix-Umgebung ist weitaus realistischer, performanter und sicherer als jeder Windoof-Server. Fakt. Dort bekommt man wenigstens auch gescheite Fehlermeldungen (!!)
                        1. apache2.2 ist laut apache selbst die "best available version", wieso sollte man noch mit 1.3 fahren?

                        2. Wer in einem Satz "Server", "ausführen", "über" und einen Browser nennt, wird es kaum schaffen ein virtuelles OS auf dem Rechner zum Laufen zu bringen, geschweige dessen, dass ich es für ziemlich übertrieben halte zum Programmieren von php Skripten ne vmware zu installieren. Gescheite Fehlermeldungen kriegt man von php auch unter Windows, genauso wie von anderer vernünftig programmierter Software, man muss nur gucken wo man suchen muss (und die Orte sind in den meisten Fällen exakt da, wo sie unter Linux auch wären)

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Original geschrieben von ghostgambler
                          1. apache2.2 ist laut apache selbst die "best available version", wieso sollte man noch mit 1.3 fahren?
                          Evtl. wegen der Authenzität eines lokalen Testsystem - einige Webhoster setzen ja auch noch 1.3 ein.

                          Und außerdem macht PHP 5 mit Apache 2.2.x AFAIK immer noch Probleme, erst letztlich wieder gelesen. Also lieber erstmal 2.0.x
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Apache 2 hat AFAIK weitaus mehr Sicherheitslücken als der gute alte 1.33 oder Konsorten. Warum? Weniger Funktionen = weniger Angriffspunkte, ganz einfach.

                            Kommentar


                            • #15
                              Re: Buffering, Flush, Sleep = Problem

                              Original geschrieben von progman06
                              Hallo zusammen, bin bei der Socketgeschichte dran
                              Danke
                              kannst Du mal die Socketgeschichte etwas erzählen
                              Danke

                              Kommentar

                              Lädt...
                              X