Moin
Ich bin gerade mehr oder weniger dabei, einen Chat zu programmieren, und hatte mir vorher einmal die Scripts eines bestehenden Chats, den ich mir mal runtergeladen habe, angeschaut. Dieser verwendet dafür unter anderem die flush()-Funktion. Die function für den Chatstream sieht bei diesem Chat so aus:
PHP-Code:
function stream ($chatuser, $chatroom)
{
global $host,$database,$user,$password,$stoolonginactive,$maxaway,$maxnoaway,$awayschutz,$chatprefix;
if($chatuser)
{
ignore_user_abort(1);
$PingTime = 1;
$Ping = 0;
$query3 = "SELECT lastaction,away,ignorelist2,streamabort FROM ".$chatprefix."chatusers where nick='$chatuser'";
$db = new db_local;
$db2 = new db_local;
// Aktueller Stand wird einmalig ausgelesen
$db->query ("SELECT id from ".$chatprefix."chatmessages_$chatroom order by id desc limit 1");
$lastpos = $db->result();
while(!connection_aborted())
{
$db5 = new db_local;
$db5 -> query ("UPDATE ".$chatprefix."chatusers SET streamabort='0' WHERE nick='$chatuser'"); // stream ist da
// MSGs anzeigen
// Aktuelle Position auslesen
$db->query ("SELECT id from ".$chatprefix."chatmessages_$chatroom order by id desc limit 1");
$pos = $db->result();
// Mit alter Position vergleichen
if ($lastpos < $pos)
{
$query2 = "SELECT message,user,datum FROM ".$chatprefix."chatmessages_$chatroom WHERE id > $lastpos";
$db->query ($query2);
// Alle hinzugekommenen MSGs durchlaufen
while ($db->next_record())
{
$text = stripslashes($db->record[message]);
$schreiber=$db->record[user];
// Normale MSGs
if ($schreiber == "")
{
$schreiber = "scheißdrecksverdammel";
}
else
{
if (!eregi("privatemessagestring", $text))
{
echo "$text";
}
}
}
$lastpos = $pos;
}
else
{
echo " ";
}
// Neue Zeilen oder Leerzeichen an den Browser schicken
flush();
usleep(500000);
} // while connection
$db->close();
} //if user
} // Function
Dieses Script will ich irgendwie nicht so ganz durchblicken ... was wohl vor allem daran liegt, dass hier (und auch in anderen Scripts, z.B. Forensoftware) z.B. statt mysql_query der Befehl $db->query verwendet wird ... ich kann aber $db weder in dieser noch in einer der includeten Dateien als festgelegte Variable finden. Daher wüsst ich gerne, wie man diese verwendet, ob man das immer kann, und was damit noch so möglich ist ... so gibt es zum Beispiel Wertzuweisungen à la $variable = $db->result oder $variable = $db->next_result. Hat da mal wer mit gearbeitet oder weiß Bescheid? Oder ist das einfach nur eine andere Schreibweise?
Und ja, falls jemand mir erklären könnte, wie ich diese flush() bei diesem Chat sonst noch einsetzen könnte, in Kombination mit der regelmäßigen Abfrage ...