Mailinglisten-Archive |
Hallo Liste, ich suche nach einer Möglichkeit zur Senkung der Server-Belastung durch einen PHP-Chat. Wie schon in vorhergehenden Threads beschrieben, halten einige Listenmitglieder PHP-Chats für zu lastintensiv. Nun weiß ich, das einige PHP-Chats shared-memory-funktionen nutzen, um dieses Problem in den Griff zu bekommen, die mir aber bis heute recht schleierhaft sind und für die ich bis jetzt auch keine gute Doku gefunden habe, das Handbuch wie div. deutsche PHP-Bücher beschränken sich auf die Darstellung der Syntax der Funktionen. Konkret: Ich habe einen recht aufwändigen PHP-Chat programmiert, der Streaming (Endlosseiten, keine Reloads) benutzt. Nachrichten kommen in eine MySQL-Datenbank, welche die Clients zyklisch abfragen. Genau hier liegt der Haken: JEDER Client fragt im Sekundenrhythmus nach, ob neue Einträge zur Ausgabe vorliegen. Bei zehn Chattern sind das allein 600 Selects/Minute, auch wenn keiner was geschrieben hat (Super ist dann, wenn das MySQL-Logging eingeschaltet ist :( ). Ich weiß, das man über shared-memory nur dann einen select auslösen kann, wenn ein neuer Eintrag vorliegt, nur realisiert kriege ich das nicht. Es wird wohl ein flag gesetzt, wenn jemand etwas schreibt, die Clients fragen das flag ab, was ja im RAM liegt, und deshalb wohl Ressourcen schont, und nur wenn es gesetzt ist, erfolgt das select. Oder? Und wie? Gibt es alternative Möglichkeiten? MySQL beherrscht ja ab 3.23 HEAP-Tables, also Tabellen im Memory, diese unterstützen aber weder BLOB noch TEXT noch AUTO_INCREMENT, was bei Chats eher schlecht ist. Ein bißchen ratlos Andre Temme P.S.: Vielleicht können ja die Chat-Experten mal Zahlen über den Ressourcenhunger ihrer Chats nennen (Main-Chat, PHPChat ...)
php::bar PHP Wiki - Listenarchive