Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Stream-Chat: While-Schleife blockiert das Script

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Stream-Chat: While-Schleife blockiert das Script

    Hallo!
    Ich bin durch nützliche Anregungen hier aus dem Forum darauf gekommen einen PHP-Stream-Chat zu schreiben.
    Hat auch soweit gut geklappt neue DB-Einträge werden ohne reload sofort angezeigt aber wenn ich nun die Anzeige (stream.php)
    PHP-Code:
    <?php

    $stream
    =1;
    while(
    $stream=1) {
        
    $result=$db->query("SELECT * FROM ".$mysql_prefix."_chat ORDER BY id");
        while(
    $row=mysql_fetch_array($result)) {
            if(!isset(
    $id)) $id=0;
            if(
    $row['id']>$id) {
                echo 
    "[b]".$row['ip'].":[/b] ".$row['post']."
    "
    ;
                echo 
    str_pad('',100000)."\n";
                
    $id=$row['id'];
            }
        }
        
    flush();
        
    sleep(2);
    }

    ?>
    in ein Frameset einbinde
    Code:
    <frameset rows="*,40" border="0">
      <frameset cols="*,150" border="0">
        <frame src="userlist.php" name="userlist" noresize>
        <frame src="stream.php" name="stream" noresize>
      </frameset>
      <frame src="send.php" name="newpost" noresize scrolling="no">
    </frameset>
    wird ab dieser Datei das Frameset nicht weiter geladen
    Code:
    <frame src="stream.php" name="stream" noresize>
    (irgendwie auch logisch) Aber meine Frage ist nun wie ich das umgehen kann. Ich hab schon genug Stream-Chats gesehen um zu wissen das es möglich ist...

    Danke an Jeden, der mir helfen kann!

  • #2
    soll das ne endlos schleife sein? while($stream=1)
    wenn nicht: while($stream==1)

    eagleScripts.de

    Kommentar


    • #3
      überprüfe mit javascript , ob alle frames geladen wurden, wenn dies dann zutreffen sollte, pumpste die stream.php datei in dein frame:

      http://de.selfhtml.org/javascript/ob...ation.htm#href

      Kommentar


      • #4
        Ja ich habs mal mit nem <meta> reload gemacht aber dann wird von der send.php das <form> blockiert da es ja in der endlosschleife hängt.
        Sprich: Alles wird vollständig geladen und dann erst baut sich der Stream auf. Aber dann funktioniert das posten eines Chat-Beitrags nicht mehr. Erst wenn ich abbreche wird das "Formular" abgeschickt.

        PHP-Code:
        <?php

        if(isset($_GET['step']) && ($_GET['step']==2)) {
            
        // Aufbau des Streams wie oben
        } else {
            echo 
        "<meta http-equiv=\"refresh\" content=\"2;URL=stream.php?step=2\">";
            echo 
        "Der Stream wird aufgebaut! Bitte warten...";
        }

        ?>

        Kommentar


        • #5
          schau dir doch mal den code von http://phpopenchat.org/ an..

          da haste alles drin was du brauchst

          Kommentar


          • #6
            Ja ich weiss hab auch schon an sowas gedacht aber ich muss leider gestehen das ich aus dem Quelltext nicht so ganz schlau werd und mir das dadurch leider nicht weiterhilft...

            Kommentar


            • #7
              Moin,

              gut geschildertes Problem, einfache Antwort

              Bau einfach hinter die beiden echos ob_get_contents.

              Diese Funktion leert den Output Buffer und der Browser freut sich und zeigt ihn an.

              wilko :wink:

              Kommentar


              • #8
                Okay, ich habs!
                Die Lösung: Folgendes in die "stream.php" am Anfang einbinden:
                PHP-Code:
                <?php

                Header
                ("Pragma: no-cache");
                Header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
                Header("Content-Type: text/html");

                ?>
                @wilko:
                Das hab ich schon probiert gehabt, hat aber leider nichts gebracht!

                Trotzdem danke an Alle!

                Kommentar

                Lädt...
                X