Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Chat - was sollte ich beachten?

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

  • PHP Chat - was sollte ich beachten?

    Hallo,
    nun bin ich an dem Punkt angelangt, andem ich eine Chatsoftware fuer meine neue Community brauche, an der ich derzeit sitze. Da ich letztendlich doch nur Webhosting Kunde bin, bliebt mir ja eigentlich nichts anderes als ein PHP-Chat uebrig (Java hat mein Hoster nicht) .. Erstmal meine Frage, gibts da nicht doch irgendwie irgendwo Alternativen zum PHP-Chat?

    Falls nein, werde ich wohl kaum drumherum kommen den Chat mittels PHP zu machen. Meine Frage hierzu, was sollte ich dabei beachten? Ich moechte beispielsweise erkennen, wann ein User nicht mehr im Chat ist (er hat sein Browserfenster geschlossen oder seine Internetverbindung wurde gekappt, http://de3.php.net/manual/de/feature...n-handling.php ) .. Jedoch brauch ich dazu eine (staendige) Ausgabe an den Browser http://de.php.net/flush ..

    Ich weiss zwar, dass ein PHP Chat den Server unheimlich belastet (belasten kann), aber es wird wohl kein Weg drumherum fuehren. Mein Hoster erlaubt mir jedenfalls dein Einsatz eines PHPChats (frueher noch MyMazenPhpChat, http://www.mymazenphp.net/chat , heute allerdings nicht mehr so toll .. Damit das Script laeuft ist es z.b. unbedinge notwendig, register_globals auf ON (!) zu haben ... )

    Meine Frage nun, was sollte ich unbedingt dabei beachten?


  • #2
    Ähm, schau dir doch mal phpMyChat an (findest du auf HotScripts.org). Tja, du wirst wohl kaum eine Datenbak umherkommen, die aktuell angemeldete User erfasst und daurch den Benutzern die benötigte Informationen zukommen lässt.
    If you read this message backward, Satan will force you to smoke marijuana.
    Gute Tutorials

    Kommentar


    • #3
      Ich hatte mir MyMazen PHP-CHat schon angeschaut, aber erstmal Danke für die Info. Was ich gerade dazuschreiben wollte (vorhin vergessen hatte), ich möchte den Chat aufjedenfall selbst programmieren. Nun, das Chatsystem soll auf vStreams ("virtuellen Streams") basieren, soll heißen das Chatausgabefenster reloadet sich nicht ständig, sondern es wird mittels connection_aborted() und ignore_user_abort() ein vStream aufgebaut, in etwa so:
      PHP-Code:
      <?php
      while( (!connection_aborted() || connection_status()==) && $id == $dbid && $dbsecurecode == $securecode)
      {
              
      // Hier wird dann abegfragt, ob eine neue
              // Message-ID in der Datenbank vorhanden ist
              // [...]

              
      flush();
              
      sleep(1);
      }
      ?>
      Flush ermöglicht mir, connection_aborted() einzusetzen, und Sleep ist einfach da um die Db ein bisschen zu entlasten.. Ich weiß dass hier das Thema PHP-Chat schon oft besprocehn wurde (hab mir auch die Themen durchgelesn), ich wollte nur ein paar Tips von euch sammeln dazu, was ich beachten soll

      Kommentar


      • #4
        Hi,

        ich wuerde einfach die SessionID in die DB uebernehmen und bei jedem Aufruf den Zeitpunkt in die DB schreiben.
        Falls nun einer der Chatpartner laenger als beispielsweise 5 Aktualisierungen weg ist, so kann das das Script beim anderen feststellen (wenn der Zeitpunkt des Abwesenden zu sehr veraltet ist) und anzeigen.

        Ansonsten fuer die Anzeige halt mit 2 Frames machen.
        Der obere (Chatanzeige) laedt sich immer wieder neu.
        Der untere hat das Formular mit input-Feld fuer den Text (laedt nicht automatisch neu ^^).

        register_globals brauchste bei sowas dann nicht.

        Wenn du noch Fragen hast melde dich.

        Gruss

        Kommentar


        • #5
          Hmm wenn du eine ewig while()-Schleife hast kommst du aber ueber die maximale Ausfuehrungszeit von 30Sekunden normalerweise hinaus ^^

          Kommentar


          • #6
            Frameset habe ich mir so gedacht, oben eins, unten eins (texteingabe), und rechts (Anzeige für die User online).. Also die max_execution_time setze ich mit set_time_limit(0), ist getestet und Funktioniert bei dem Script auch..
            Der obere (Chatanzeige) laedt sich immer wieder neu.
            Wie gesagt, das ganze basiert auf den Streams..

            Kommentar


            • #7
              Ja daran dachte ich auch ^^

              Mit dem dauerhaften PHP-Aufruf haste vllt den Vorteil, dass der User nicht dauern eine neue Anfrage an den Webserver sendet.
              Waere bisschen leistungssparend.

              Find aber die Idee mit den VStreams saugeil.

              3 Tage im Board und sauviel gelernt ^^

              Gruss

              Kommentar


              • #8
                Also ich bin ja auch eigentilch nicht sehr ueberzeugt davon, einen CHat in PHP zu schreiben, aber was solls, ich brauch einen, IRC will ich nicht, also bleibt mir ja fast nichts anderes uebrig.. Die vStreams wuerden mir erst einmal doch eine Menge Traffic erspraren (10 User im Chat, alle 3 Sekunden reload bei etwa 1 KB macht das nach einigen Minuten schon was aus) ..

                Meine Ueberlegung dazu war eben, dass die DB (von jedem User) jede 1-2te Sekunde angefragt wird, ob eine neue Message ID vorhanden ist (diese Abfrage kostet ja noch nicht allzuviel Leistung) .. Wenn ja, wird erst dann die neue(n) Nachricht(en) geholt und ausgegeben.. Ist ja schonmal ein recht großer Vorteil den Reload-Chats gegenueber..

                Kommentar


                • #9
                  Ja und man hat (wie es bei ISDN ja vorkommen kann ^^) nicht immer mal wieder weissen Hintergrund, dann Text, Hintergrund, Text...
                  Besonders wenn der Chat laenger wird.

                  Gruss

                  Kommentar


                  • #10
                    Hi,
                    hier sind noch ein paar Beispiele für PHP-Chats:

                    http://www.zend.com/codex.php?CID=272

                    cu
                    Xfer

                    Kommentar


                    • #11
                      Stimmt, war auch meiner Ueberlegungen. Bei einem 2-3 Sekunden Reload kann es dann naemlich schon einmal passieren, dass ISDN gar nicht mehr mitkommt und man nur noch weisse Fenster angezeigt bekommt, was ja auch nicht sehr schoen ist ..
                      Jetzt bleibt ja eigentlich nur noch die Frage der Ressourceneinsparung und der Templates.. Datei oder (MySQL-)DB Templates? Die ganzen Sprachvariablen (fuer multilinguale Chats) in der DB oder in einer Art config.php speichern (die man dann einfach includet) ?

                      Zur Template / Sprachvariablen / Stylevariablen DB-Methode:
                      Ich hatte da mal eine Art "Sperre" entwickelt, die folgendermassen handelte:
                      Die Templates war alle fein und sauber deren Namen und Einsatzgebiete nach geordnet (index_login.tpl, index_onlineuser.tpl usw..), ebenso die Sprachvariablen .. Bei einer Anfrage an die DB wurden nur die noetigsten Variablen herausgeholt, die eben auch nach dem gleichen System wie die TEmplates geordnet waren (index_login, ... ), dies geschah in einer foreach() Schleife (oder war es while() ? ) in der geprueft wurde, welche %Platzhalter% noch im Template sind (ich hoffe ihr versteht was ich meine ^^)..

                      Waere dies denn eine gute Moeglichkeit, PHP so gut wie es geht zu entlasten?

                      Kommentar


                      • #12
                        ich habe mir einen eigenen chat geschreieb

                        kann sich jemand registrieren und mir sagen wie er ihn findet ob er ok ist und so ???

                        http://test.pj-firepower.com/Chat/user.php

                        währe sehr ett

                        Kommentar


                        • #13
                          Zitat von Nosferatu
                          ich habe mir einen eigenen chat geschreieb

                          kann sich jemand registrieren und mir sagen wie er ihn findet ob er ok ist und so ???

                          http://test.pj-firepower.com/Chat/user.php

                          währe sehr ett
                          Wie funktioniert denn in deinem Chat die Textausgabe? Kopier doch mal ein bisschen Quellcode hier rein

                          Kommentar


                          • #14
                            Zu den Templates.
                            Ich denke an sich macht es auf Dauer wenig an der Performance, da du das PHPScript ja nur startest und nie beendest bis der User den Chat verlaesst.
                            -> Die Templates kannst du beim Beitreten laden und dann die weiterhin noetigen im Speicher lassen.

                            Dennoch empfehle ich die Templates per DB, da ich damit zur Zeit sehr gute Erfahrungen habe
                            Jedoch gabs dazu erst einen Thread wo sehr gute Antworten kamen:
                            http://www.phpfriend.de/ftopic42963.html

                            Besonders das System von Meikel solltest dir mal angucken.
                            Find das ziemlich gut, aber muss mir das noch genauer anschauen bezueglich den Grenzen ^^

                            Gruss

                            Kommentar


                            • #15
                              ich bin gerade in der arbeit also kann ich nur erklären ungefähr wie ich es gemacht habe::

                              also wenn man sich mit dem user einloggt wird das datum und der user in einer db gespeichert und gesagt das ab diesem datum(uhrzeit ) der chat ausgelesen wird

                              dann klickt man auf den chat und es wird ab da an alles ausgelesen

                              die dinge werden in einer db gespeicher mit ID USER TEXT (BLOB) UHRZEIT

                              der chat selbst ist in einem iframe da ich in php keine frames so verwenden kann können schon aber nicht so wie ich wollte

                              und über den link wird eben in den iframe die user daten übergeben und hab in dem iframe ein refresh von 2 sekunden gemacht und ein makro das er beim refresh nah unten springt hm.. ob das makro heißt ? glaub anders zumindest wurde unten gesagt das die url unten #unten heißt und beim refresh springt er dann eben runter

                              am anfang hatte ich immer das problem das es flakerte aber das hat sich dann komischerweise irgendwann geändert *lol* weiß nicht warum das einzige was man nicht kann ist richtig nach oben scrollen da er wieder runterspringt durch den refresh

                              das ist dei version 1 eigentlich ist sie so fertig nur braucht sie so noch zu viel platz da die DB nicht gelscht wird das werde ich aber noch umbauen und noch admin /mod funktionen einbauen

                              derzeit ist die arbeit gestopt da ich an einem neuen besseren cms baue wo ich den chat schon integriere

                              im fortgeschritten forum ist ein beitrag von mir da ich hilfe brauche zu einem tool was ich mache


                              würde mich über mehr kommentar freuen von euch wie ihr den chat so findet ob euch an dem chat was steht und so

                              Kommentar

                              Lädt...
                              X