Mailinglisten-Archive |
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