Seite 1 von 3

Resourcenschonender Chat mit PB und PHP/MySQL

Verfasst: 26.03.2005 15:35
von Gamer
Ein ScrollAreaGadget für die Chatausgabe, die Daten sind in einem String.

Beim Klick auf "Absenden" wird die Textzeile an den String angehangen,
im Chatfenster ausgeben und an den Server übertragen.

Aller 5 Sekunden wird in der Onlinedatenbank nachgeschaut ob
neue Zeilen vorhanden (Abfrage mit Timestamp).

Die neuen Zeilen (nicht der komplette Inhalt) werden runtergeladen und zum String hinzugefügt und ausgegeben.

Ist das halbwegs sinnvoll? Find die Lösung immer noch besser als irgendwelche Meta-Refresh-Chats...

Hab hier schon einige P2P-Chats gesehen, aber meine Leute wollen sich
nicht mit irgendwie IPs, Servern und Clients rumschlagen, zumal es
in einer Firma mit Proxy wohl auch nicht funktionieren würde...

Verfasst: 26.03.2005 18:45
von bluejoke
1. alle 5 Sek. halte ich nicht für sinnvoll
2. PHP/MySQL genauso wenig, da ein PHP-Skript für gewöhnlich nach 30sek. gekillt wird - und so wie ich dich verstehe, soll der Client einmal connecten, und danach nur noch Daten empfangen bzw. senden. Das geht AFAIK auch nicht, da PHP nicht pushen kann (ist in Verbindung mit Browsern auch absolut unnötig)

Mein Vorschlag: Du hast irgendwo Root-Zugriff (Windows / Linux) und baust dir beide Seiten (Client & Server) mit PB. Das ist imho besser geeignet als PHP (zumindest für diese Aufgabe) .


Simon

Verfasst: 26.03.2005 19:02
von Gamer
Ähm nein, PB soll aller 5 Sekunden eine Abfrage bei der DB machen
und lediglich die neuen Chatzeilen ziehen (falls welche vorhanden) - also keine Streaming.

Die neuen Chatzeilen werden dann an die bereits bestehenden String angehängt und das Gadget aktualisiert.

Verfasst: 26.03.2005 19:31
von pogi02
bluejoke hat geschrieben:1. alle 5 Sek. halte ich nicht für sinnvoll
2. PHP/MySQL genauso wenig, da ein PHP-Skript für gewöhnlich nach 30sek. gekillt wird - und so wie ich dich verstehe, soll der Client einmal connecten, und danach nur noch Daten empfangen bzw. senden. Das geht AFAIK auch nicht, da PHP nicht pushen kann (ist in Verbindung mit Browsern auch absolut unnötig)

Mein Vorschlag: Du hast irgendwo Root-Zugriff (Windows / Linux) und baust dir beide Seiten (Client & Server) mit PB. Das ist imho besser geeignet als PHP (zumindest für diese Aufgabe) .


Simon
Hallo


30 Sek Kill? PHP?

Nein es gibt in PHP einen Befehl der den Timeout ausschltet (weiss jetzt aber nicht wie er heisst) muss aber vom Server so konfiguriert sein ist aber meist leider nicht. Und der PHP-Befehl Flush() schickt alles sofort an den Server also mit PHP Streamen wäre kein Problem

Es gibt schon genügend PHP-Streaming-Chats nur der Traffic verbrauch ist halt auch dementsprechend hoch

Verfasst: 26.03.2005 19:43
von Gamer
pogi02 hat geschrieben:Es gibt schon genügend PHP-Streaming-Chats nur der Traffic verbrauch ist halt auch dementsprechend hoch
Deswegen will ich ja nur die neuen Zeilen abfragen und nicht immer alles.

Verfasst: 26.03.2005 20:03
von bluejoke
In dem Fall ist das IMHO schon sinnvoll.
Ist ja dann im Grunde nur ein Browserchat, für den halt ein spezieller "Browser" programmiert wurde, wodurch Traffic gespart werden kann.

Die Frage ist aber, ob dein Hoster genug Zugriffe auf die DB zulässt und ausreichend schnell ist.

EDIT: Ich würde einen P2P Chat bevorzugen, bei dem ausschließlich die Onlineliste mit den zugehörigen IPs durch einen Server mit PHP/MySQL verwaltet wird. Dann ist schon mal das Traffic- und das IP-Problem erledigt.

Verfasst: 26.03.2005 20:24
von DarkDragon
Ich hab das genauso mal gemacht und alle 5 Sekunden neu conntected und das PHP Script ausgeführt. Hat wunderbar funktioniert nur war es lahm. Außerdem: Warum nicht einfach Connection-Status: Keep-Alive in HTTP einfügen?

Verfasst: 26.03.2005 21:06
von Gamer
bluejoke hat geschrieben:In dem Fall ist das IMHO schon sinnvoll.
Ist ja dann im Grunde nur ein Browserchat, für den halt ein spezieller "Browser" programmiert wurde, wodurch Traffic gespart werden kann.
Eben! Jetzt weißt Du was ich meine ;) User die wenig oder gar nix schreiben, sollen nicht aller 5 Sekunden einen Refresh bekommen sondern nur noch aller 30 Sekunden oder so.
Die Frage ist aber, ob dein Hoster genug Zugriffe auf die DB zulässt und ausreichend schnell ist.
Naja ich rechne mal im Höchstfall mit 15 Usern im Chat - das wird HostEurope schon verkraften ;)

Die Frage ist eher ob PB das so schnell mit dem Connecten hinbekommt...
EDIT: Ich würde einen P2P Chat bevorzugen, bei dem ausschließlich die Onlineliste mit den zugehörigen IPs durch einen Server mit PHP/MySQL verwaltet wird. Dann ist schon mal das Traffic- und das IP-Problem erledigt.
Richtig, die IP wird meinem Server beim Einloggen ja mitgeteilt... aber was ist, wenn der User über einem Proxy drin ist und ich eine Nachricht an diese ProxyIP schicke?

Verfasst: 26.03.2005 21:47
von pogi02
Hallo


Warum willst du es eigentlich über MySql machen??? Schick es direkt vom Client zum Server und vom Server zu allen Clienten

Verfasst: 26.03.2005 22:10
von Gamer
Das ist das Problem: Ich habe keinen Rootserver. Deswegen auch diese Umweglösung die aber eigentlich auch brauchbar funktionieren dürfte.

Bei ICQ wird das ja anscheinend auch erst alles zwischengespeichert...