Resourcenschonender Chat mit PB und PHP/MySQL

Für allgemeine Fragen zur Programmierung mit PureBasic.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Resourcenschonender Chat mit PB und PHP/MySQL

Beitrag 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...
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag 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
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag 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.
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Beitrag 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
MfG pogi02

- www.apware.net
Aktuelles Projekt:
-
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag 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.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag 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.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag 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?
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Beitrag von pogi02 »

Hallo


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

- www.apware.net
Aktuelles Projekt:
-
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag 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...
Antworten