Eigener Chat? Brauche Hilfe - Datenbank, JavaScript Problem!

Oli-bt

Mitglied
Hi zusammen!

Ich bin gerade dabei einen Chat zu programmieren.... bzw, versuche ich es gerade....

Ich hab das ganze jetzt mit Frames gemacht... unten die Eingabe die man machen kann, dies wird an eine PHP-Datei gesendet, die den Text in eine MySQL Datenbank einträgt. Diese PHP-Datei leitet dann automatisch weiter auf eine PHP-Date die im oberen Frame die Ausgabe macht....
Soweit alles ok...

Die Ausgabe Datei aktuallisiere ich anhand eines JavaScriptes:
Code:
   <script language="JavaScript">
   <!--
   function fenster_neu() {
   location.href='home.php'
   }
   window.setTimeout('fenster_neu()',2000);
   //-->
   </script>
Das Problem was ich meiner meinung nach habe ist... das Script verbraucht wahnsinnig Datenbank und Traffic-Resourcen....

Gibt es eine andere möglichkeit das Problem zu beheben
Wäre super wenn mir jemand weiterhelfen kann.
 
Da bist du auf das Problem #1 bei PHP-Chats gestossen:
Sie funktionieren über Serveranfragen in regelmässigen, sehr kurzen Abständen, was einen Haufen Traffic verursacht, und den DB-Server zur Weissglut bringt :-)
Im schlimmsten Falll kann es sogar mal passieren, das dein Webspace aufgebraucht wird, weil die Logfiles in kürzester Zeit gigantische Ausmaße annehmen.(selbst erlebt :suspekt: )

Ohne diese regelmässigen Serveranfragen geht es aber nicht.

Das ist der Vorteil von JAVA-Chats...sie liefern, so es aktuelle Daten gibt, selbige ungefragt an den Clienten.

Das A+O ist deshalb bei PHP-Chats die Optimierung der Abläufe: Datenaustausch minimieren und DB-Abfragen aufs Nötigste Beschränken.

Details kann man zwar nur sagen, wenn man weiss, wie dein Chat aufgebaut ist, aber mal jenes als Denkanstoss:

Neue Daten gibt es nur, wenn jemand etwas schreibt... wenn niemand etwas schreibt, muss man auch garnicht erst die DB abfragen und etwas aktualisieren.

Du könntest bspw. in einer Textdatei bei jedem Geschreibe einen Timestamp notieren.
Der Client sendet an den Server eine Anfrage, in der er den Timestamp übermittelt, zu dem er die letzte Anfrage sendete.

Serverseitig könnte man jetzt erstmal in der Textdatei nachschauen, ob der Timestamp in der Textdatei jünger ist. Wenn nicht, brauch man garnicht erst die DB abzufragen und etwas aktualisieren.

Man könnte auch gleich per JS und XMLHttpRequest in der Textdatei nachschauen, das erspart dann wiederum das auslesen der Textdatei per PHP.

Das jetzt nur mal als Denkansatz... da gibt es noch viele andere Gesichtspunkte.
Ich hab mir auch mal nen PHP-Chat gemacht, und damals habe ich schätzungsweise 80% des Aufwandes in die Minimierung des Datenaustausches gesteckt.
 

Neue Beiträge

Zurück