Ich arbeite an einer einfachen Chat-App, wahrscheinlich 10 bis 20 Benutzer pro Zimmer.Einfache PHP lange Polling-Chat-Skript, zu einfach?
Das Skript, das die Datenbank nach neuen Nachrichten abfragt, sieht für alle Anfragen zu einfach aus.
Unten ist der Codeblock, der für neue Nachrichten-Schleife wird der Rest des Skripts nur die Variablen bekommen, den Bau der Abfrage und das json Antwortobjekt:
$sleepTime = 1; //Seconds
$data = "";
$timeout = 0;
//Query database for data
while(!$data and $timeout < 10){
$data = getQuery($sql);
if(!$data){
//No new messages on the chat
flush();
//Wait for new Messages
sleep($sleepTime);
$timeout += 1;
}else{
break;
}
}
Der Block oben wird Abfrage der Datenbank für neue Nachrichten jede Sekunde für 10 Sekunden, wenn nach den 10 Sekunden keine neuen Nachrichten sind, wird es den Browser benachrichtigen. Der Browser wartet 5 Sekunden und sendet dann eine weitere Anfrage , um neue Nachrichten zu erhalten.
Wenn das Skript jedoch neue Nachrichten findet, fordert der Browser sofort weitere neue Nachrichten an, sobald er die Antwort mit den neuen Nachrichten vom Server erhält.
Dieser Prozess geht weiter und weiter ...
So wie kann ich diesen Prozess weiter zu optimieren, welche? Ist das so gut wie es geht? Funktioniert gut auf meinem lokalen Server, aber ich habe Angst, dass nur ein paar Benutzer einen Live-Server (Shared Host) mit allen Anfragen und den Schleifen überlasten könnten.
Hier Live-Demo Sie http://pixbush.com/chat/chat.php mit Firebug überprüfen
Einfachheit ist, was wir als Programmierer ** anstreben **. –
Link funktioniert nicht mehr. – kachar