is der chat so gut ?

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

  • is der chat so gut ?

    Also nach mehr stuendiger ueberlegung habe ich ein bestimmtes "einfaches" prinzip fuer einen private-chat ausgedacht :

    - da ich es anders nie hinbekommen werde - leider - will also nur wissen ob ich das so umsetzen kann - thx !


    das ganze soll vom ablauf her so aussehen :

    wenn benutzer eingeloggt ist kann er mit bestimmten benutzer chatten - der ebenfalls eingeloggt sein muss - soweit sogut ... und nun folgender braingestormter algorithmus :




    Benutzer ist eingeloggt ------>

    klickt auf chatten bei bestimmten Benutzer den er anchatten will , id des zu anchattenden benutzers wird uebergeben - daraus wird der benutzername etc.. ausgelesen ------>

    jetzt wird geprueft ob dieser ebenfalls eingeloggt/online ist ------>

    falls ja, oeffnet sich ein neues fenster mit ausgabe/eingabe boxen , das dauernd refresht ------>

    eingeloggter benutzer schreibt --------->

    geschriebenes wird als "eingeloggterbenutzer:angeschriebenerbenutzer~nachricht*"
    in einer "chat.txt" gespeichert ----------------->

    der angeschriebene benutzer bekommt nachricht das er angeschrieben wurde durch einen dauernd refreshenden iframe ^^------------->

    er klickt nun auf einen link "sie wurden von angeschrieben" und kommt in dasselbe chatfenster ------>

    das heisst er bekommt nur das zu sehen wo in der textdatei sein name entweder vor: oder :hinter dem ":" steht ------------>

    also wird bei beiden nun ausgegeben was sie schreiben ---------->

    falls jetzt einer der beiden noch einmal den gleichen anchatten will wird zuerst geschaut ob bereits dieser benutzer angeschrieben wurde d.h. es wird in der textdatei nach von:an gesucht --------->

    falls ja oeffnet sich das fenster nicht ---------------->

    und so lauft das bis einer der beiden das chatfenster schliest ----->

    nun werden alle eingaben mit dem der gerade raus ist geloescht also wo er entweder vor oder hinter dem : steht ------------------>

    d.h. der andere hat keine nachrichten mehr von ihm .... ------------>




    und alle sind froh und weiter schaff ichs nicht yoooooop !!!!

    was ich noch gerne haette waere zum beispiel das man jeder nachricht nen time() - stamp anfuegt um zu sehen wann er geschrieben wurde ---> und wenn dann eine bestimmte anzahl von:an vorhanden ist wird diese aus speichergruenden ab dieser bestimmten anzahl wieder ueberschrieben ^^
    ----> also die ganze ausgabe sozusagen nach datum sortieren und nicht nach reihenfolge - das man praktisch dann immer ueberschreiben kann ..... .




    danke fuer eure anregungen und staunenden gesichter ^^


    greetz der jetz sich damit die nacht um die ohren schlagende subabrain !!!!!!

  • #2
    Brauchst gar nicht unbedingt extra Dateien für die Chatinhalte. Wenn A mit B chatten möchte, legst du A's SID in B's Session ab und umgekehrt. Die Eingaben eines Users speicherst du nur in seiner eigenen Session.
    Nach einiger Zeit könnten die Sessions von A und B dann etwa so aussehen ... Format $chat[SID des Chatpartners][Timestamp] = Chattext.

    Session von A:
    $chat[B][1128410506] = 'Hallo';
    $chat[B][1128410510] = 'Prima';
    $chat[B][1128410515] = 'Tschüss';

    Session von B:
    $chat[A][1128410508] = 'Hi, wie gehts?';
    $chat[A][1128410512] = ':P';
    $chat[A][1128410513] = 'Hau ab!';

    Geht bestimmt noch effektiver, soll also nur als Anregung dienen.

    Kommentar


    • #3
      Re: is der chat so gut ?

      Original geschrieben von subabrain
      jetzt wird geprueft ob dieser ebenfalls eingeloggt/online ist ------>
      du kannst nie zu 100%iger genauigkeit sagen, dass ein user on/offline ist.
      Original geschrieben von subabrain
      falls ja, oeffnet sich ein neues fenster mit ausgabe/eingabe boxen , das dauernd refresht ------>
      >
      ich hoffe dein server ist mit n paar gb ram bestückt. überleg mal wie der ausgelastet (bzw. überlastet *g*) wird, wenn mal 200 user "chatten".

      Original geschrieben von subabrain
      [...]
      in einer "chat.txt" gespeichert ----------------->
      soviel zu aus-/überlastung...
      Original geschrieben von subabrain
      der angeschriebene benutzer bekommt nachricht das er angeschrieben wurde durch einen dauernd refreshenden iframe ^^------------->
      nocheinmal: auslastung!
      Original geschrieben von subabrain
      d.h. es wird in der textdatei nach von:an gesucht --------->
      noch mal: auslastung?!danke fuer eure anregungen und staunenden gesichter ^^
      [/B][/QUOTE]
      ich staune höchstens über den server, der das bei 100-200 user aushält...
      die text-datei-geschichte ist mE auch nicht so besonders toll, aber mE ist das ziemlich auslastend. hab so n szenario zwar noch nie gehabt, aber von dem was man so liest....
      mE ist das ne ziemlich lastige und wacklige sache... das prinzip ist nicht schlecht aber die umsetzung nicht so wirklich. das mit dem refresh-zeug ist mE das schlimmste. wie willst du das refreshen? per javascript?! was wenn ein user javascript deaktiviert hat? das verbraucht doch haufenweise traffic oder nicht? dann noch mit textdateien?! für sowas ist mE ne datenbank gescheiter.
      MfG
      aim
      Lies mich jetzt!
      - OT-Tags-Liebhaber und BB-Code-Einrücker -

      Kommentar


      • #4
        ja schon aber ich habe bereits soviel rumgemacht wegen chats und so weiter und habe langsam kein bock mehr - deshalb mach ich das jetzt auf meine weise - auch wenn diese ziemlich auslastend ist ...

        PS : das sind nicht nur 100-200 - das sind deutlich mehr


        naja ich danke euch wenn ihr nochn paar tuning tipps fuer mich habt ... zum beispiel das ich das mit dem refreshen so hinbekomme wie bei arsc -- wie isses eigentlich bei arsc-chat - bin nie wirklich dahinter gekommen xD???


        THX !


        subabrain !

        EDIT: und danke an onemorenerd fuer den tipp werds mal veruschen !
        EDIT: habe den chat jetzt so wie ich oben geschrieben habe umgesetzt - jetzt fehlt mir nur noch der loesch algorithmus -dann habe ichs ^^ - und dann versuch ich mal noch das mit sessions ...
        Zuletzt geändert von subabrain; 04.10.2005, 09:33.

        Kommentar


        • #5
          Re: Re: is der chat so gut ?

          Original geschrieben von aimbot
          mE ist das ne ziemlich lastige und wacklige sache... das prinzip ist nicht schlecht aber die umsetzung nicht so wirklich. das mit dem refresh-zeug ist mE das schlimmste. wie willst du das refreshen? per javascript?! was wenn ein user javascript deaktiviert hat? das verbraucht doch haufenweise traffic oder nicht? dann noch mit textdateien?! für sowas ist mE ne datenbank gescheiter. [/B]
          jeder php/mysql/flatfile chat funktionier mit refreshes, wie auch sonst.
          Eine andere Möglichkeit wären höchstens Sockets (was man aber nur mit eigenem Server machen kann und nichtmal dann immer) oder man benutzt eben kein PHP dafür sondern Java oder was auch immer.

          Und was soll an Textdateien die Auslastung hochtreiben ? Viele Leute hier denken Textdateien sind böse und nur MySQL ist toll, aber ich würde immer lieber in Textdateien auslagern als eine weitere Anfrage an meine DB zu schicken, die hat nämlich bei vielen Usern schon genug Daten zu schaufeln, besonders wenn da unter den Tabellen noch viele Verknüpfungen bestehen.

          Gut Textdateien durchsuchen ist sicherlich nicht sonderlich performant, aber eine Template Engine macht nicht anderes, die Templates nach Variablen durchsuchen und diese entsprechend ersetzen und ich sage mal das der Rechenaufwand den PHP dadurch hat relativ gering ist und MYSQL eher das ist was ausbremst.

          Du solltest nicht alle chats in einer Datei speichern sondern vielleicht für jeden Chat eine eigene Datei, dann werden diese auch nicht groß. Das ganze mit MYSQL würde sicherlich mehr performance ziehen, wenn bei jedem Refresh wieder Queries gefahren werden.

          Ich arbeite beruflich jeden Tag mit einer Shop Software die im Gegensatz zu XTCommerce etc die Artikeldaten in einer CSV Datei speichert. Beim Update des Shops werden für jede Kategorie Textdateien mit Artikel angelegt so das diese im Schnitt 10-30 Zeilen haben.
          Dieser Shop ist WESENTLICH schneller als Xtcommerce & Co wo alle Artikel in einer Tabelle stehen und diese für Variationen / Sprache auch noch mit anderen verknüpft sind. Bei den MYSQL Shops klagen viele Kunden über Performance Probleme bei über 10.000 Artikeln, was natürlich auch an shared MYSQL Servern etc liegt.
          Aber auch bei Apache & Mysql auf einem Server ist dieser CSV basierte Shop wesentlich schneller.

          Viele denken hier MYSQL ist das allheilmittel oder plappern nach was Sie irgendwo gelesen/gehört haben, wir wissen es mit unserer Shop Software aber aus mittlerweile 7 jähriger Erfahrung, auch wenn Performance heutzutage nicht mehr so eine große Rolle spielt, bei klickintensiven Anwendungen und vielen Datensätzen ist MYSQL ein Performance Killer.

          Sicher für Foren/Gästebücher etc kommt man an SQL nicht vorbei, da haben textdateien zuviele Nachteile was ändern/gleichzeitigen Zugriff etc angeht.
          Aber statische Daten oder Daten die nur einmalig/vom Admin geändert werden, also im betrieb nur gelesen werden, würde ich immer in Textdateien auslagern.

          SQL ist sicherlich leichter zu programmieren, aber nicht immer das Optimum.

          Kommentar


          • #6
            tjo da hat wohl einer erfahrung - thx

            Kommentar


            • #7
              Re: Re: Re: is der chat so gut ?

              Original geschrieben von kaguya
              jeder php/mysql/flatfile chat funktionier mit refreshes, wie auch sonst.
              Eine andere Möglichkeit wären höchstens Sockets (was man aber nur mit eigenem Server machen kann und nichtmal dann immer) oder man benutzt eben kein PHP dafür sondern Java oder was auch immer.
              die frage hast du dir selbst beantwortet. ich hab auserdem nie behauptet, dass sockets weniger lastig sind. dazu fehlt mir die erfahrung.
              Original geschrieben von kaguya Und was soll an Textdateien die Auslastung hochtreiben ? Viele Leute hier denken Textdateien sind böse und nur MySQL ist toll,
              hab so n szenario zwar noch nie gehabt, aber von dem was man so liest....
              Original geschrieben von kaguya
              ...aber eine Template Engine macht nicht anderes...
              aber nicht alle 2-3 sekunden, was bei einem chat aber wohl nötig wäre oder?
              MfG
              aim
              Lies mich jetzt!
              - OT-Tags-Liebhaber und BB-Code-Einrücker -

              Kommentar


              • #8
                hmm es gibt ja mehrere arten von refreshs --- ich denke das ein meta refresh mehr resourcen zieht als ein script mit set_time_limit(0) oder so xhtml requests ... - naja denk ich zumindest ^^

                Kommentar


                • #9
                  Original geschrieben von onemorenerd
                  Wenn A mit B chatten möchte, legst du A's SID in B's Session ab und umgekehrt.
                  Ungeklärte Punkte:
                  - Wie kommst du an die SID des anderen Users? (Gut, die kann man ggf. in DB o.ä. mitloggen)
                  - Wie machst du das mit dem "in seine Session reinschreiben"? Willst du etwa selber die Session-Dateien auslesen und daran manipulieren?
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    ich werde auf meinem server einen irc server installieren und da dann per sockets drauf zugreifen, das scheint für mich die beste lösung und ich habe auch irgendwo schonmal gelesen das das ganz gut funzt.

                    Wenn du so eine Refresh Lösung machst musste ja nicht alle 2-3 sek neuladen, wenn der Chat sowieso nur unter 2 Usern ist, so habe ich dich jedenfalls verstanden, reicht ja auch ein refresh alle 10sek.

                    Das mit der Performance muss man sehen, ich würde jedenfalls in textdateien schreiben und diese auslesen, das ist dann nicht mehr als ein Template auszulesen und man belastet den Db Server nicht mit unzähligen weiterer Queries (wenn viele Leute gleichzeitig Chatten).
                    Oder einen extra DB Server für die Chat anwendung, aber das wär sicherlich übertrieben.

                    Kommentar


                    • #11
                      mE ist die irc-server-lösung am besten für so etwas geeignet...
                      ich selbst benutze auch so etwas.
                      heise löst das sehr gut, wie ich finde.
                      MfG
                      aim
                      Lies mich jetzt!
                      - OT-Tags-Liebhaber und BB-Code-Einrücker -

                      Kommentar


                      • #12
                        Original geschrieben von wahsaga
                        - Wie machst du das mit dem "in seine Session reinschreiben"? Willst du etwa selber die Session-Dateien auslesen und daran manipulieren?
                        SID von B und die zu schreibenden Daten einem zweiten Script/Thread übergeben, das macht session_id(), session_start() usw.
                        Könnte funktionieren.

                        Kommentar

                        Lädt...
                        X