Johannes Bauer: / PHP Chat entwickeln

Hi Leute,

wenn ich mir einen Chat programmieren will, müssen ja die Chattexte sekundär irgendwo gespeichert werden..

Ich dachte mir, dass ich die Chtanachrichten temporär in einer DB speichere (ca 60 sek lang) und sie dann ganz normal ausgebe.

Als Problem ergibt sich natürlich, dass die ersten Nachrichten nach 60 min nicht mehr verfügbar sind...

Wie würdet ihr das machen??

Danke schonmal & MfG

Johann

  1. Hi Johann,

    erst mal kurz: erst 60 sekunden und dann 60 minuten? ;-)
    egal...

    (Ich verwende kein MySQL und gehe einfach analytisch vor)
    Ich werde wahrscheinlich auch bald versuchen einen Chat zu programmieren, wobei ich mir das so vorstelle, dass es eine Datei (den Chat) gibt und alle möglichen weiteren Dateien wo die Userinfos drin stehen usw...
    Diese eine Datei enthält die ganzen Messages, allerdings steht vor jeder Message eine Nummer, die eindeutig sein muss.
    Die weiteren Messages werden einfach am Ende der Datei wieder reingeschrieben, mit einer fortlaufenden Nummer (wobei die Nummer auch nur bis 100 gehen muss, dann wird die entsprechende Nachricht Nummer 1 am Anfang gelöscht bevor die neue Nummer 1 am Ende der Datei hinzugefügt wird (die Anzahl der gespeicherten Messages sollte auf jeden Fall variabel einstellbar sein).
    Jeder User hat in seinem Browser dann eine PHP-Datei laufen, die sich z.B. alle 10 Sekunden aktualisiert und eine Usernummer (die bis 100 gehen kann) enthält. Diese wird beim Aktualisieren mitgeliefert und die Nachrichten mit den Nummern größer als diese Zahl werden in der aktualisierten PHP-Datei an ein JavaScript übergeben und dieses schreibt die Nachrichten in das Chatfenster.

    Da gibt's natürlich immer noch einige Probleme, aber für einen *sehr* einfachen Chat reicht das aus.

    Die weitaus bessere Möglichkeit ist mit der time()-Funktion zu arbeiten (statt mit einer beliebigen Nummer in der Datei).

    Hoffe die Denkansätze waren nicht soooooooo falsch....... :-D

    Viel Glück!!!

    Marc Reichelt || http://www.marcreichelt.de/

    --
    tel.: 0049/6181/72224
    fax.: 0049/6181/740724
    Linux is like a wigmam - no windows, no gates and an Apache inside!!!
    1. Hi,

      ich meinte natürlich in beiden Fällen "60 Minuten"..

      Danke für die Tipps, deine Zahlenvariante ist auch nicht schlecht...
      Was genau meinst du mit der time()-Funktion?

      Mfg Johann

    2. Hi Marc,

      (Ich verwende kein MySQL und gehe einfach analytisch vor)

      Das scheint mir vernünftig.

      Ich werde wahrscheinlich auch bald versuchen einen Chat zu programmieren, wobei ich mir das so vorstelle, dass es eine Datei (den Chat) gibt und alle möglichen weiteren Dateien wo die Userinfos drin stehen usw...

      Aha. Und das hälst du für sinnvoll?

      Ich würde, wenn es denn unbedingt PHP sein _muss_, folgendes vorschlagen:

      1. User ruft Chat-Script auf.
      2. Er bekommt eine Session.
      3. Das Script legt eine Datei an, die $SID.".chat" heißt.
      4. Das Chat-Fenster ist in drei Frames aufgeteilt: Einer "drumherum", in dem befindet sich das Eingabefeld. Der POSTet an den oberen <iframe>, der den Chattransfer vornimmt. Der mittlere <iframe> wird vom oberen <iframe> per JS aktualisiert, wenn neue Nachichten vom Script in die Session-Chat-Datei geschrieben wurden.
      5. Alle 3 Sekunden ruft der obere <iframe> das Script currentchat.php auf und erhält Daten, falls eine neue Nachicht anliegt. Sonst schickt das Script HTTP-304 zurück.
      6. Das Script currentchat.php prüft bei jedem Aufruf, ob eine Session seit 5 Minuten oder mehr keine Anfrage mehr gestartet hat und löscht sie gegebenenfalls aus dem Chat. Sollte später eine Anfrage daher kommen, wird sie wieder "eingeloggt".

      Hoffe die Denkansätze waren nicht soooooooo falsch....... :-D

      Kommt drauf an, was du willst. Im Ernst: Für einen Chat ist IRC _immer_ die bessere Wahl.

      Fabian