Chat mit hilfe von PHP, JS und xmlHTTPRequest

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Chat mit hilfe von PHP, JS und xmlHTTPRequest

    Hi, ich wollte mal ein paar Meinung zu dem Thema einholen.

    Erstmal der Hintergrund: Ich schreibe ein CMS für ein Fansite-Netzwerk, (momentan 5 Seiten) natürlich auf PHP und mySQL basierend. Mir kam dazu auch die Idee, einen Chat im Admin Control Panel unterzubringen, da viele unsere Newsposter mit IRC nicht wirklich was anfangen können und unsere Channel ausser durch L und ein paar Idlern eh nicht benutzt werden
    Bin gerade an der Planung für die ganze Geschichte. Clientseitig ist klar: xmlHTTPRequest. Einer, der alle paar (Milli-)Sekunden am Server abfrägt, ob was neues geschrieben wurde. Unnd der andere, der halt die geschriebene Textzeile zum Server sendet. Soweit kein Problem.

    Nun aber zum Serverseitigen:
    MySQL werde ich Grundsätzlich nicht dafür missbrauchen, das hat genug anderes mit den Newsmodulen und dem Board zu tun. Vielmehr wollte ich das im XML Format lokal auf dem Server speichern.

    Nun stehen mir 2 alternativen zur Verfügung:

    Ein Script, welches ganz normal über Port 80 seine Anfragen bekommt, auswertet und ggf. Daten zum Cleint sendet. Also

    Anfrage -> Scriptstart -> XML-Datei mit dem Chat öffnen -> Liest/schreibt relevante Daten -> Speichert XML-Datei -> Scriptende

    oder:

    Ein Admin inintialisert das Script, dieses krallt sich einen Port und wird mit

    set_time_limit(0);
    ignore_user_abort(1);

    und einem while(...) {}

    In eine Endlosschleife gezwungen.

    Demnach würde sich eine Anfrage vom Cleint so auswirken:
    Script wartet -> Empfängt Daten -> Holt/schreibt relavante Daten in ein Array -> Sendet Daten -> Geht wieder in Wartestellung

    Der jenige, der das Script gestartet, kann es dann natürlich auch wieder beenden, dabei schreibt es die Daten auf die Festplatte.


    Ich tendiere zu Lösung 2, obwohl sie etwas aufwändiger ist. Was haltet ihr davon ?

    (Bitte keine Comments über den Sinn oder den Nutzen, ich hab zu viel Zeit, basta ! )

  • #2
    Nur mal zur Datenspeicherung. MySql würde ich grundsätzlich bei einem Chat nicht unbedingt verwenden (natürlich abhängig auch von Umfang und Zugriffe) - aber das hast du ja auch nicht vor.

    Die performanteste Lösung dürfte die Speicherung in shared-memory-Segmenten sein. Falls du bei deinem Hoster Zugriff darauf hast, würde ich diese Alternative zur Datenablage mal andenken...
    Simploo CMS - das einfache Webseiten-Bearbeitungsprogramm

    Kommentar


    • #3
      Wir haben unseren eigenen Root-Server aber mit sowas kann ich ehrlich gesagt nicht wirklich was anfangen

      Kommentar


      • #4
        Irgendwo musst du die Daten ja speichern.

        Datenbank: Nein
        Datei: möglich, aber langsam
        RAM: möglich, schnell, aber nicht benutzerübergreifend

        Shared memory:
        Daten im RAM speichern, allerdings nicht mit $chat = 'xyz' sondern durch Reservieren eines Speicherbreichs (identifiziert durch eindeutiges Token)

        Zugriff auf den Inhalt ist durch eben dieses Token möglich
        http://www.php.net/manual/ref.shmop.php
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          OK, das hab ich Verstanden. Wobei das trotzdem nicht so ganz die Lösung meiner Frage ist.

          Dieses Shared Memory-Zeugs ist interessant, wenn wirklich jede Anfrage einzeln vom Script ausführen lasse.

          Aber wenn ich ein Script habe, welches dauerhaft läuft (Durch die Befehle oben) und sozusagen einen "Miniatur-httpd" darstellt, brauch ich das diese Shared Memory Funktionen doch nicht, da ich ja die Daten auch dauerhaft in einem normalen Array halten kann, bis ich dieses Script Anweise, den Socket zu schließen, die Daten zu speichern und sich dann zu beenden.

          €DIT: Ich hab jetzt keine Infos dazu gefunden, aber der Bereich, der durch shmop_open belegt wird, wird doch wieder freigegeben, wenn das Script beendet wird ? Wenn ja, würde es mir nicht wirklich was bringen, meine Daten in so einen Speicherbereich zu legen, wenn sie dann doch eh gleich wieder weg sind.
          Zuletzt geändert von EEBKiller; 23.09.2005, 15:37.

          Kommentar

          Lädt...
          X