phpbar.de logo

Mailinglisten-Archive

[php] Performanter php Chat

[php] Performanter php Chat

Andreas Müller php at universalware.de
Mit Nov 5 12:41:28 CET 2003


Hallo Norbert,
also bevor ihr hier auf das System mit Dateien schimpft das es so schlecht
wäre probiert es doch einfach mal aus.
Ich will mal versuchen die Technik noch etwas genauer darzustellen:

Was gemacht wird ist bei eingehenden Nachrichten diese an die Dateien
anzuhängen die sie bekommen sollen. D.h. im einfachen Fall an alle Benutzer
im Raum. Bei mir mach das das PHP Script das die Daten vom Browser entgegen
nimmt. Dazu wird eine serialisierte Liste der Raumbenutzer verwendet, in
deren Datei geschrieben fertig.
Das auslesen läuft keinesfalls auf ein "heraussuchen" hinaus. Vielmehr ist
die Textdatei als eine Pipe zu verstehen. An der einen Seite schreibt einer
an der anderen Seite liest einer. Dazu muss man sich eben den Filepointer
merken und einfach wieder dorthinsetzen wo man zuletzt gelesen hat. Das
macht jedes Client-Lese-Script selber und mit extrem wenig Aufwand.

Fazit der ganzen Aktion: Der Chat läuft bei einem Massenhoster (Hosteurope)
und ohne Datenbankzugriff extrem stabil und schnell. 50 User oder mehr sind
selbst bei dem Hoster kein Problem auf dem System. Auf einem Testsystem mit
50 Usern an dem man mal die Last sehen konnte war da nicht mehr als 5% Last
(P4-1.8 GHZ, 1 GB Ram).

Sicher für noch größere Systeme bietet sich eine zentrale Serverinstanz an
die den Datenaustausch In-Memory erledigt. Dazu habe ich bereits Jabber
erfolgreich getestet. Ein Jabber Server an dem ein PHP Lese-Script ansetzt
ist eine gute Alternative, solang man einen eigenen Jabber Server laufen
lassen kann.

Warum habe ich eigentlich einen eigenen Chat gebaut? Der Grund liegt in der
100%ig Anpassbarkeit vor allem was Benutzer/Profile und Passwörter betrifft.
Er musste in einem bestehenden Framework laufen und die dort vorhandenen
Benutzerprofile verweden können. Viele andere Produkte (so leider auch
Jabber daher nur Test) verschlüsseln nichtmal ihre Passwörter in ihrer
Datenbank. Nur mal so am Rande :-) IRC-Server musste leider ausfallen da die
Benutzernamen-Einschränkungen die zumindest da wo ich es getestet habe
existierten nicht akzeptabel waren.

Gruß,
Andreas



php::bar PHP Wiki   -   Listenarchive