Ich bin gerade daran ein kleinen Chat zu schreiben. Ansich sehr einfach aufgebaut.
1. Request (alle 3sekunden) für die Userliste und ein request pro Sekunde für die neusten Nachrichten.
PHP mässig läuft das ganze über eine mysql Tabelle ab was auch Problemlos laufen würde.
Nun habe ich gestern einfach mal spasses halber die Requests auf 0.5sek userlist und 0.1sek Nachrichten gesetzt und auf zwei Clients geöfnet. Siehe da, der Apache braucht schon 30% CPU last was extrem ist für 2 Clients bzw. ca 20 unter normalen bedingungen.
Etwas optimieren konnte ich das ganze in dem ich die Chat Funktionen in ein externes File ausgelagert habe und nicht alle Funktionen der Seite (ca 10 000 PHP Zeilen) gelesen habe bei jedem Request. Das hat dann noch ca 17% last ergeben -> immer noch viel zu viel für einen Chat!
Nun habe ich heute Testweise mal versucht ohne Ajax zu Arbeiten und mit einer offenen Verbindung und einer Whileschlaufe das selbe zu Simulieren. Man glaubt es kaum aber sogar bei 0.001 Sek. Aktuallisierung braucht der Server nicht mehr als 5% CPU last und der RAM stieg auch kein MB an. Was noch dazukommt: Ich habe das ganze auf 3 verschidenen Browser gleichzeitig geöfnet, heisst also 3fach so viel Arbeit für den Server!
Für mich ist also klar das die Last durch die Requests produziert wird und nicht durch das eigentliche Script. Gibt es nun eine möglichkeit Ajax mit offenen Verbindungen irgend wie so hinzubiegen das es läuft, oder könnte ich ev. Apache noch optimieren damit das ganze besser läuft?
1. Request (alle 3sekunden) für die Userliste und ein request pro Sekunde für die neusten Nachrichten.
PHP mässig läuft das ganze über eine mysql Tabelle ab was auch Problemlos laufen würde.
Nun habe ich gestern einfach mal spasses halber die Requests auf 0.5sek userlist und 0.1sek Nachrichten gesetzt und auf zwei Clients geöfnet. Siehe da, der Apache braucht schon 30% CPU last was extrem ist für 2 Clients bzw. ca 20 unter normalen bedingungen.
Etwas optimieren konnte ich das ganze in dem ich die Chat Funktionen in ein externes File ausgelagert habe und nicht alle Funktionen der Seite (ca 10 000 PHP Zeilen) gelesen habe bei jedem Request. Das hat dann noch ca 17% last ergeben -> immer noch viel zu viel für einen Chat!
Nun habe ich heute Testweise mal versucht ohne Ajax zu Arbeiten und mit einer offenen Verbindung und einer Whileschlaufe das selbe zu Simulieren. Man glaubt es kaum aber sogar bei 0.001 Sek. Aktuallisierung braucht der Server nicht mehr als 5% CPU last und der RAM stieg auch kein MB an. Was noch dazukommt: Ich habe das ganze auf 3 verschidenen Browser gleichzeitig geöfnet, heisst also 3fach so viel Arbeit für den Server!
Für mich ist also klar das die Last durch die Requests produziert wird und nicht durch das eigentliche Script. Gibt es nun eine möglichkeit Ajax mit offenen Verbindungen irgend wie so hinzubiegen das es läuft, oder könnte ich ev. Apache noch optimieren damit das ganze besser läuft?