Chat entwickeln



  • Wie ist das Prinzip eines Chats? Ich hab folgenden Code:

    <?php 
    	session_start();
    ?>
    <?php echo "<?xml version=\"1.0\" encoding=\"iso-8859\" ?&gt;"; ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>
    Chat
    </title>
    <?php 
    	if(isset($_SESSION['style']))
    	{
    		echo '<link name="stil" type="text/css" rel="stylesheet" href="'.$_SESSION['style'].'" />';
    	}
    	else
    	{
    		echo '<link name="stil" type="text/css" rel="stylesheet" href="Style/style.css" />';
    	}
    	if(isset($_POST["text"]))
    	{
    		$file = fopen("save\chat.txt", "a");
    		fwrite($file, $_SESSION["User"]." schreibt: ".$_POST["text"]."\n");
    		fclose($file);
    	}
    ?>
    </head>
    <body class="body">
    <br />
    <a style="margin-left:2.5%;" id="bigga" href="index.php">zur&uuml;ck zur Startseite</a>
    <form method="post" name="reply" action="Chat02.php">
    <textarea name="message" id="Chat" style="margin-left:2.5%; border-width:4; border-color:#000000;" disabled>
    Willkommen im Chat von Daniel Kalthoff	
    <?php	
    	$file = file("save\chat.txt");
    	for($i=sizeof($file)-50; $i <= sizeof($file); ++$i)
    	{
    		echo $file[$i];
    	}
    ?>
    </textarea>
    <textarea id="Chatuser" name="User" disabled>
    User im Chat:
    </textarea><br /><br />
    <div style="margin-left:2.5%;">
    <b id="over">Text:</b><input name="text" id="input" size="40" />
    <button onclick="reply.submit()">Absenden</button></div>
    </form>
    </body>
    </html>
    

    Dürfte soweit auch gehen, aber ich hab folgende Probleme:
    1. Wenn ein anderer user was schreibt, dann wirds mir erst bei reload angezeigt. Also hab ichs mit

    <meta http-equiv="refresh" content="1" />
    

    versucht, aber dann konnte man, wegen dem dauernden reloa nichts mehr eintippen.
    2. Wie kann ich alle User im textarea User anzeigen?
    3. Wann soll ich die Datei löschen? Nach 1. Stunde mit 10 Leuten online wird die schon relativ groß sein, deshalb die Frage.

    Vielleicht fallen mir ncoh mehr Fragen ein, aber bis dahin
    thx im Voraus
    Glamdrink



  • Einfacher wärs mit einer Datenbank. Bei jedem Beitrag eines Benutzers speicherst du einfach die Zeit mit. Bei deinen Benutzern selber speicherst du die Zeit des letzten Anzeigens mit. Sobald alle Zeiten der Benutzer, die online sind, höher sind als die Zeit der Beiträge, löscht du die alten bereits übertragenen Beiträge. Allerdings solltest du dann das Konzept deines Chats etwas ändern. Auch wenn es nicht gerne verwendet wird, wären bei einem Chat Frames gar nicht so schlecht.



  • AJ schrieb:

    Auch wenn es nicht gerne verwendet wird, wären bei einem Chat Frames gar nicht so schlecht.

    Da muss ich AJ voll zustimmen.

    Ein Chat auf PHP - Basis wirst du wohl vernünftig ohne frames nicht lösen können

    d.h. ein frame für das anzeigefenster, eins für die user rechts daneben und einen dadrunter für die eingabe.
    Dann reloadest du nur die datei in der mitte und voila, du kannst auch eingeben...

    ABER:
    Ich will dich vorwarnen!
    Ein PHP - Chat benötigt sehr (!) viele ressourcen (traffic)

    Ich hab wegen dem Gewerbe einen LiveSupport auf die Homepage gemacht. Der hat auch einen integrierten PHP - Chat.
    Nach Chatten mit einem (!) benutzer über ca. 2 stunden hinweg hatte ich knapp 8 - 12 mb traffic mehr als normal...

    Also da solltest du aufpassen, falls du das teil online stellst und viele damit chatten...

    BTW: ich würde es auch mit einer Datenbank machen 😉

    Liebe grüsse



  • mrchat schrieb:

    ABER:
    Ich will dich vorwarnen!
    Ein PHP - Chat benötigt sehr (!) viele ressourcen (traffic)

    Absolutes ACK!

    Wenn Du schon auf PHP Basis einen schreiben möchtest, dann versuch es evt. mal mit Sockets.

    Greets



  • @Magoon
    Mit sockets wärs natürlich am besten, aber wie realisiert man da am besten den Server, wenn man nicht ständig den Server laufen lassen will 😕



  • warum kein irc?



  • AJ schrieb:

    @Magoon
    Mit sockets wärs natürlich am besten, aber wie realisiert man da am besten den Server, wenn man nicht ständig den Server laufen lassen will 😕

    Ich würde den Server dauerhaft laufen lassen, bzw. würde ich sowieso keinen Chat auf PHP Basis betreiben, sondern nen vernüftigen IRC aufsetzten.

    Das war nur so ein Gedanke heute morgen. Eventuell mit Shared Memory arbeiten, damit auch bei vielen Connects nicht der Speicherverbrauch in die Wolken steigt.


Anmelden zum Antworten