phpbar.de logo

Mailinglisten-Archive

[php] Performanter php Chat

[php] Performanter php Chat

Dennis Sterzenbach lists at darknoise.de
Die Nov 4 07:21:30 CET 2003


ANGEL Harald wrote:
> Da ich das so gelöst hab, dass die Zeilen in eine MySQL DB eingetragen werden und alle 10sec der Client aus der DB die aktuellen 20 Zeilen holt und ausgibt macht das bei 100 Chattern einen enormen Traffic (3GB/Tag) den wir (ich) nicht bezahlen können.
> Und nicht nur das Traffic-Problem: Ab ca 60 User wird die Komplette Site total langsam. Kann jetzt aber nicht sagen, ob es an den hohen Datenbankanfragen, an der Leitungskapazität oder an der CPU des Servers liegt...
> 
> Habt ihr eine Idee, wie man einen php Chat performanter machen kann??
Ich weiß nicht, ob Du Dir mal die Statistikinformationen zur
Performance von MySQL und dessen Abfragen angesehen hast (findest
Du im Netz: googel, und im Handbuch auf www.mysql.com).
Andere Sache ist: sind die Logs sauber? (Segfaults...)

Einen Chat in PHP zu basteln, ohne dafür eine Datenbank zu verwenden
ist allerdings auch nicht ganz einfach und bedarf einiger Tricks.
Das Ganze ließe sich zum Beispiel auf Textdateien (eine Pro Raum,
oder Benutzer...) realisieren.
Frage ist in jedem Fall die Synchronisation - die kostet Zeit und
bereitet Kopfschmerzen.

Da mir nichts besseres einfällt (außer eine Hochsprache für die 
Realisierung einzusetzen) ist die DB IMO ein ganz guter Ansatz.

In jedem Fall sollte so gut wie möglich auf folgendes geachtet werden:
  - So wenig OOP wie möglich, wenn dann nur in Maßen und gut begründet
  - So wenig Datenbankzugriffe wie möglich pro Scriptaufruf machen
    (Userdaten in Session & Cookies auslagern).
  - Komprimierte Kommunikation (mod_gzip für Apache bzw.
    output_compression von PHP nutzen)
  - SQL-Anweisungen soweit wie möglich optimieren
  - Verzweigungen im PHP Script, die direkt auf eine Antwort hinauslaufen
    oder es tun könnten, so schnell wie möglich ansteuern (also
    break, continue etc. nutzen)
  - Speicher für PHP limitieren (aber nicht zu hart, sonst gibts
    nahher noch Faults u.ä.)

Es ist und bleibt aber ein großes Problem. Ich habe selbst eine Zeit
lang mit verschiedenen Chatsystemen rumprobiert und letztlich meine
Entwicklung auf Java gestützt. PHP fehlt unter anderem halt die
Persistenz von Objekten und Informationen. Daher muss bei jedem
Aufruf (und das sind ja nich grad wenige bei Dir) alles neu evaluiert
und aufgebaut/geladen werden. Das kostet halt Zeit.


Gruß
-- 
   Dennis Sterzenbach



php::bar PHP Wiki   -   Listenarchive