Chat mit PHP (sleep, flush)
Robert
- php
Hallo!
Ich habe oft gelesen, dass ein Chat mit PHP nicht sehr gut ist. Naja immerhin wäre dafür eine Endlosschleife nötig. Aber wenn man nun einen Schleife erstellt mit Hilfe von sleep(2) und danach flush in der Schleife und alle 30 oder 60 Sekunden aktualisiert ist es dann auch sehr systemleistungsfressend. Es werden auch die Geschriebenen Texte die nicht mehr gebraucht werden gelöscht.
Ist es dann auch schlecht für den Server?
Es soll nur ein kleiner Chat werden für bis zu 30 Leuten in blühenden Zeiten auf einmal.
MfG Robert
Ich habe oft gelesen, dass ein Chat mit PHP nicht sehr gut ist. Naja immerhin wäre dafür eine Endlosschleife nötig. Aber wenn man nun einen Schleife erstellt mit Hilfe von sleep(2) und danach flush in der Schleife und alle 30 oder 60 Sekunden aktualisiert [..]
Ist es dann auch schlecht für den Server?
Was schlecht für den Server ist, bestimmt derjenige, der die Rechnung bezahlt.
Grundsätzlich spricht gegen einen HTTP-Chat (mit PHP hat das nur am Rande zu tun), daß HTTP kein Protokoll ist, mit dem sich Daten ohne Auslöser von A nach B schicken lassen. Das Schema lautet immer Anfrage -> Antwort, der Browser schickt eine Anfrage an den Server, der Server sendet eine Antwort zurück. Der Server ist deshalb nur mehr schlecht als recht dazu in der Lage, eintreffende Daten sofort an seine Kundschaft weiter zu leiten.
Bei einem HTTP-Chat muß also zwischen hohem, nutzlosem Datenverkehr, erzeugt durch ständige Anfragen beim Server, und langen Transportzeiten, bedingt durch nicht ganz so ständige Anfragen, abgewägt werden. Ersteres erzeugt Kosten (die Serverlast ist im kleinen Kreis vernachlässigbar), letzteres macht aus dem Geplauder ein zähes Warten auf eine Antwort, das eigentlich jede nette Unterhaltung im Keim erstickt und mehr an Erstversuche aus der elektrischen Fernkommunikations-Urzeit erinnert.
Es soll nur ein kleiner Chat werden für bis zu 30 Leuten in blühenden Zeiten auf einmal.
Wenn Du schon so viele erwartest, solltest Du wirklich ein funktionierendes System nutzen. IRC dürfte seinen zehnjährigen Geburtstag schon hinter sich haben, funktioniert in Echtzeit und ohne lästigen Browser, der wegen jeder Antwort eine ganze Seite neu laden muß.
Du tust Deinen Nutzern damit auch etwas Gutes abseits Deines eigenen Angebots: IRC-Netze gibt es dutzendweise, jederzeit tummeln sich in einem der größeren mehrere 10.000 Teilnehmer. Falls also bei Dir gerade niemand ist, kann man sich mit jemand anderem austauschen.
hi,
die Serverlast ist im kleinen Kreis vernachlässigbar
aber bitte nur im _ganz_ kleinen kreis, sprich wenn es sein eigener server ist, den nur er nutzt.
in einer shared hosting umgebung alle anderen nutzer unter sowas "leiden" zu lassen, wäre extrem unfair.
gruss,
wahsaga
Hallo!
Ich habe oft gelesen, dass ein Chat mit PHP nicht sehr gut ist. Naja immerhin wäre dafür eine Endlosschleife nötig. Aber wenn man nun einen Schleife erstellt mit Hilfe von sleep(2) und danach flush in der Schleife und alle 30 oder 60 Sekunden aktualisiert ist es dann auch sehr systemleistungsfressend. Es werden auch die Geschriebenen Texte die nicht mehr gebraucht werden gelöscht.
Ich hatte vor einiger Zeit die Kommunikation von IRC und HTTP beispielhaft verglichen: </archiv/2003/9/58291/#m327141>
Ist es dann auch schlecht für den Server?
Zumindest hast Du das Problem dass für jeden teilnehmenden Chatter im Prinzip ein kompletter Apache/PHP Prozess benötigt wird. Das ist nicht wirklich effizient, und je nach Konfiguration des Servers, des Apachen und von PHP fpührt das ganze sehr schnell dazu dass der RAM voll ist und geswappt werden muss - das ist dann möglicherweise der Anfang vom Ende ;-)
Wenn Du dann noch sowas wie persistente Datenbankverbindungen verwendest kannst Du ab einer gewissen Zahl an Usern auch hier Probleme bekommen...
Dazu kommt dass die Kommunikation nicht wirklich stabil ist, Du kannst an allen möglichen Stellen an Timeouts stoßen, auf die Du möglicherweise gar keinen Einfluss hast, ...
Grüße
Andreas