![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Christian Mühlroth Registriert seit: 04.09.2005 Ort: Nürnberg
Beiträge: 561
|
Abend (oder Nacht), nun, wie ihr alle ja mehr oder weniger mitbekommen habt arbeite ich derzeit an einem Chat (was, wie, warum, und wo ist egal Nun bin ich an einen Punkt gestossen andem ich angefangen hab mir Gedanken über das Chatframeset zu machen. Zu allererst - meiner Meinung nach ist ein Frameset nötig, oder gibt es eine bessere Idee? Ein einzelnes DIV-Set würde zwar auch optisch funktionieren, doch dann wüsste ich nicht, wie ich bestimmte Funktionen wie z.B. das aktualisieren der User-Liste vornehmen soll (geschweige denn die Funktion des Chatreloads). Ich hab mal eine Datei angehängt, die das Ganze kurz veranschaulicht. In diesem Fall wäre das Frameset viergeteilt. Das hieße allerdings, dass ich ja vier verschiedene Dateien hab, in denen ich jedesmal eine Datenbankverbindung aufbauen muss (wenn auch nur kurz, aber troztdem), die Templates parsen muss, den User authentifizieren muss usw.. Das würde den Server nicht unerheblich belasten. Gibts da irgendwelche Vorschläge von eurer Seite aus=
__________________ http://www.ChrisDiary.De |
| | |
| | Nach oben #2 | ||||
| me pro ok? Registriert seit: 07.09.2005 Ort: Pulheim bei Köln
Beiträge: 964
| Zitat:
Zitat:
Zitat:
Zitat:
__________________ Gedanken aus Draht stricken einen Zaun. | ||||
| | |
| | Nach oben #3 | |||
| Christian Mühlroth Registriert seit: 04.09.2005 Ort: Nürnberg
Beiträge: 561
| Zitat:
Zitat:
Zitat:
__________________ http://www.ChrisDiary.De | |||
| | |
| | Nach oben #4 | |
| me pro ok? Registriert seit: 07.09.2005 Ort: Pulheim bei Köln
Beiträge: 964
| Zitat:
Zu den Templates: Du machst doch sicher mittels regulärer Ausrücke PHP-Code draus, den du dann mit eval() ausführst, oder? Also cache den PHP-Code und füll nur die Werte ein.
__________________ Gedanken aus Draht stricken einen Zaun. | |
| | |
| | Nach oben #5 | ||
| Christian Mühlroth Registriert seit: 04.09.2005 Ort: Nürnberg
Beiträge: 561
| Zitat:
Zitat:
Ich hab einzelne Tags, z.B. {§var§} für automatisch-ersetzte Sprachvariablen, {{var}} für Uservariablen, {%var%} für automatisch-ersetzte Systemvariablen und noch zwei .. Die werden dann mittels str_replace (hatte anfangs preg_replace, da php4 noch nicht str_ireplace unterstützt, vllt hol ich mir das aus PEAR::Compat) ersetzt.
__________________ http://www.ChrisDiary.De | ||
| | |
| | Nach oben #7 | |
| Christian Mühlroth Registriert seit: 04.09.2005 Ort: Nürnberg
Beiträge: 561
| Zitat:
Und mir ist grade aufgefallen, dass ich beim Frameset ja genauso JavaScript einsetzen muss, also kann ich auch gleich auf das Div umsteigen..
__________________ http://www.ChrisDiary.De | |
| | |
| | Nach oben #8 | ||
| me pro ok? Registriert seit: 07.09.2005 Ort: Pulheim bei Köln
Beiträge: 964
| Zitat:
Zitat:
Wobei das nicht sonderlich elegant ist, bei sowas. Und irgendwie auch nicht wirklich toll, weil ja jedes mal der ganze Frame (Nachrichten/Userliste) komplett neu geladen wird.
__________________ Gedanken aus Draht stricken einen Zaun. | ||
| | |
| | Nach oben #9 | |
| Christian Mühlroth Registriert seit: 04.09.2005 Ort: Nürnberg
Beiträge: 561
| Zitat:
__________________ http://www.ChrisDiary.De | |
| | |
| | Nach oben #10 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Alles habe ich nun nicht gelesen, aber ich gebe dir einen guten Rat: Arbeite mit einem eigenen Chat-Server! Sprich: Du schreibst ein Script, dass du dann in der Console startest und das als Chat-Server arbeitet. Dieses Script baut als einziges Verbindungen zur Datenbank auf und horcht auf einem Port den du bestimmst nach Verbindungen. Danach arbeitest du einfach mit fsockopen, um mit dem Server Daten auszutauschen. Funktioniert superschnell und ermöglicht dir einen astreinen Chat zu programmieren. Ich habe das schon hinter mir, auch wenn ich mitlerweile den Chat gerne nochmal neu schreiben möchte, um ihn noch weiter zu optimieren, aber ansich läuft alles schön, man drückt Enter, die Nachricht ist sofort weg und sofort im Chat-Fenster zu sehen. Ich selber habe auch mit Frames gearbeitet, wenn ich auch keine Userliste habe, sondern nur ein Eingabe- und ein Ausgabe-Frame. Eine Userliste birgt halt immer das Problem entweder stetig ein "click" zu erzeugen, bei den Fanatikern von Sounds auf ihrem Rechner (ein "click" bei jedem neuen Seitenaufruf, leider habe ich keine Möglichkeit gefunden, dies zu unterdrücken) oder JavaScript vorauszusetzen. Muss aber jeder selber wissen. Achja, was ich noch vergas: Ich würde so oder so versuchen den Chat nicht über die DB laufen zu lassen, da dies einfach viel zu lahmarschig und Ressourcenlastig ist. Logins usw. sind vollkommen OK, aber nicht den Austausch der Texte.
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #11 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.481
|
Aber er will das ja unbedingt so machen und er will es ja auch anderen zur Verfügung stellen, so dass wir dann langsam aber sicher dahinkommen, dass es nicht mehr in akzeptabler Performance möglich ist. So wie du das hier beschreibst .. |
| | |
| | Nach oben #12 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Er kann auch für andere den Server zur Verfügung stellen, man braucht lediglich die Möglichkeit in der Console PHP-Scripte ausführen zu können und die Socket-Erweiterung muss installiert sein, das ist aber bei ziemlich vielen Hostern der Fall. Ansonsten muss ich sagen: Viel Glück, wenn versucht wird, das über eine DB zu machen, aber wenn er den Chat dann auf nem Webspace laufen lässt, könnte es ab einer gewissen Anzahl von Usern im Chat zu Problemen kommen und - wie es einem Kumpel von mir damals mit seiner Community passiert ist - einfach der Webspace abgeschaltet werden. Die DB ist meiner Meinung nach nicht dazu geeignet.
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #13 | |||||
| Christian Mühlroth Registriert seit: 04.09.2005 Ort: Nürnberg
Beiträge: 561
| Zitat:
Kannst du mir diese Methode trotzdem mal erläutern, und gibt es evtl auch ein Workaround ohne dass das Script über die Konsole gestartet werden muss? Zitat:
Die Messages sollten nämlich eigentlich schon unbedingt archiviert werden.. Zitat:
Zitat:
Zitat:
__________________ http://www.ChrisDiary.De | |||||
| | |
| | Nach oben #14 | |
| me pro ok? Registriert seit: 07.09.2005 Ort: Pulheim bei Köln
Beiträge: 964
| Zitat:
__________________ Gedanken aus Draht stricken einen Zaun. | |
| | |
| | Nach oben #15 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Also die Methode ist folgende: Ein Script nutzt die Socket-Erweiterung, um eine Ressource (wie beim File-Handling) auf einem bestimmten Port zu nutzen und auf diesen nach Anfragen zu "horchen". Die Anfragen, die an diesem Port ankommen, müssen entsprechend verarbeitet werden, was dann die Sache des Scriptes selber ist. Jede neue Verbindung bekommt nach der "aktivierung einen eigenen Ressource-Handler zugewiesen, damit man vom Chatserver aus direkt nur einen der Chat-Clients "ansprechen" kann (z.B. beim kicken, bannen oder flüstern von nöten). Ich habe dann intern ein Array gepflegt mit aktuell vorhandenen Usern im Chat, über die ich auf die Ressource-ID zugreifen konnte und habe somit gefiltert, wer welche Nachricht bekommt. Leider sind die Funktionen für Socket-Handling nicht oder nur unzureichend dokumentiert, aber die Kommentare helfen einem schon weiter und dort steht auch ein kleiner Chat-Server als Beispiel drin. Im Endeffekt macht der Server dann alles und das Ein- und Ausgabescript schrumpft auf wenige Zeilen Quelltext. Man greift von diesen Scripten einfach mit fsockopen() auf den Server (mit entsprechendem Port) zu und tauscht die benötigten Daten aus, wie z.B. Login-Informationen usw. Wie man diese Daten formatiert ist einem selber überlassen. Wenn man es unbedingt will, kann man sich auch die Mühe machen und vorhandene Standards versuchen nachzubauen, die Frage ist allerdings, wie sinnvoll das Ganze dann letztlich sein wird. Die Geschwindigkeit ist atemberaubend, ich habe es geschafft einen Chat zu schreiben, der selbst bei 50 Usern noch keine Geschwindigkeitsprobleme hervorgerufen hat, allerdings würde es den Rahmen sprengen, den Quellcode hier zu posten, da er - wie ich glaube ich schon sagte - überarbeitungswürdig ist, aber aktuell für mich halt gilt "never change a running system". http://de.php.net/manual/de/ref.sockets.php
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #17 | |
| Christian Mühlroth Registriert seit: 04.09.2005 Ort: Nürnberg
Beiträge: 561
| Zitat:
__________________ http://www.ChrisDiary.De | |
| | |
| | Nach oben #18 |
| me pro ok? Registriert seit: 07.09.2005 Ort: Pulheim bei Köln
Beiträge: 964
|
Nein, sowas wie die Socketverbindungen in PHP meine ich. Dann hätte man eine echte Server-Client-Lösung. Browser = Chatclient, PHP = Chatserver.
__________________ Gedanken aus Draht stricken einen Zaun. |
| | |
| | Nach oben #19 | ||||
| Johannes Müller Registriert seit: 15.09.2005 Ort: Königreich Flieden
Beiträge: 522
| Zitat:
Zitat:
wenn du das chat-protokoll archivieren willst, kannst du das trotzdem machen, sparst dir dann aber immer noch die aufwendigen db-abfragen. fuer das archiv koenntest du eine db verwenden, oder das ganze log in einer textdatei speichern. kommt drauf an, wie und wie oft das protokoll abgefragt wird.
__________________ Weißt Bescheid - Scheiß wie weit | ||||
| | |
| | Nach oben #20 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Ich habe zum Beispiel für jeden Raum eine Text-Datei angelegt, die den Namen des Raumes trägt und in die dann alles aus dem Raum reingeschrieben wird. Ich weiß allerdings nicht genau, ob es eine Begrenzung für die Anzahl von File-Handlern gibt!?
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Ich brauche Hilfe bei der Administration meines rootservers! | Firat | Plauderecke | 7 | 07.09.2007 07:40 |
| Brauche Hilfe auf dem Handy/Telefon-Tarif-Markt | Ben | Plauderecke | 5 | 20.11.2006 16:50 |
| Brauche Hilfe d-sub / dvi | Buhmann | Plauderecke | 2 | 20.11.2006 13:04 |
| Brauche hilfe bei einer SQL Abfrage | philstrike | Datenbanken | 18 | 07.07.2006 09:15 |
| Brauche Hilfe!! | Flipp | Allgemeine Java-Programmierung | 6 | 17.02.2005 10:48 |