Chat (endlosschleife)

proloser

Erfahrenes Mitglied
Hallo,

ich versuche einen Chat zu programmieren und brauche eure Hilfe für den Refresh der Seite.

Ich hab unter der Suchfunktion schon einige Befehle gefunden wie:

ob_start();
flush();
header('Location: ' . "chat.php");

aber ich weiß nicht wie ich die Befehle einsetzen muss.


Diese Ausgabe möcht ich Refreshen ...

PHP:
<?

require("inc_header.php");

$res=mysql_query("SELECT * FROM chat_text"); 
while($row=mysql_fetch_array($res)) {
  eval("echo \"".get_template("chat.htm")."\";");
}

require("inc_footer.php");

?>

MfG proloser
 
Ich habs jetzt so probiert aber es funktioniert trozdem nicht.

PHP:
<?
ob_start ();

require("inc_header.php");

if($action == ""){
  $res=mysql_query("SELECT * FROM chat_text"); 
  while($row=mysql_fetch_array($res)) {
    eval("echo \"".get_template("chat.htm")."\";");
  }
}

header ('Location: chat.php'); 
exit;

require("inc_footer.php");

ob_end_flush (); 
?>
 
PHP:
<?php
    require('inc_header.php');

    while(!connection_aborted()) {
        $res=mysql_query('SELECT * FROM chat_text');
        while($row=mysql_fetch_array($res)) {
            eval("echo \"".get_template("chat.htm")."\";");
        }
    }

    require('inc_footer.php');
?>
 
Das funktioniert irrgend wie nicht, die Einträge werden nur unendlich oft ausgegeben bis zu dieser Fehlermeldung.

Code:
Fatal error: Maximum execution time of 30 seconds exceeded in C:\apache\htdocs\chatroom\chat.php on line 5
 
Jörg hat wohl nicht bedacht, dass PHP standardmäßig ein Timeout von 30 Sekunden hat. In die while-Schleife gehört noch eine Zeile:

set_time_limit(30);

damit wird die Timeout-Zeit bei jedem Aufruf erneut auf 30 Sekunden gesetzt.

Mensch Jörg, sorry aber du solltest schon überlegen, dass die Leute beim Shared-Hosting solche Einschränkungen wie Timeout haben. Das war wohl etwas unüberlegt und hilft dem Fragesteller nicht wirklich weiter ;-)

Gruß

Marian
 
Ist logisch, da du ja alle ausliest. Du müsstest nur den letzten Eintrag auslesen.

Wegen dem Fehler solltest du die Executionzeit ausschalten, sonst ist die Endlosschleife nur eine Bis-Ende-Zeit-Schleife
 
heddesheimer hat gesagt.:
Jörg hat wohl nicht bedacht, dass PHP standardmäßig ein Timeout von 30 Sekunden hat. In die while-Schleife gehört noch eine Zeile:

set_time_limit(30);

damit wird die Timeout-Zeit bei jedem Aufruf erneut auf 30 Sekunden gesetzt.

Mensch Jörg, sorry aber du solltest schon überlegen, dass die Leute beim Shared-Hosting solche Einschränkungen wie Timeout haben. Das war wohl etwas unüberlegt und hilft dem Fragesteller nicht wirklich weiter ;-)

Gruß

Marian
Ähm, netter Versuch. :-)
Da er von Anfang an aber eine Endlosschleife haben wollte, bin ich davon ausgegangen, daß er mit dieser Problematik vertraut ist und die Schwierigkeiten bereits aus dem Weg geräumt hat.
 
Zurück