Pracuję na zwykłej aplikacji do czatu, prawdopodobnie od 10 do 20 użytkowników na pokój.Prosty skrypt czatowania z długim zapytaniem PHP, zbyt prosty?
Skrypt, który wysyła zapytanie do bazy danych o nowe wiadomości, jest zbyt prosty dla wszystkich żądań, które otrzyma.
Poniżej znajduje się fragment kodu, że pętle są nowe wiadomości, reszta skryptu jest po prostu coraz zmienne, budowa zapytania i obiekt odpowiedzi json:
$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;
}
}
Blok powyżej będzie kwerendy baza danych dla nowych wiadomości co sekundę przez 10 sekund, jeśli po 10 sekundach nie będzie nowych wiadomości, powiadomi przeglądarkę. Przeglądarka czeka 5 sekund, a następnie wysyła kolejne żądanie , aby uzyskać nowe wiadomości.
Jednak jeśli skrypt znajdzie nowe wiadomości, przeglądarka będzie żądać nowych wiadomości natychmiast po otrzymaniu odpowiedzi z nowymi wiadomościami z serwera.
Ten proces trwa i trwa ...
Więc w jaki sposób można zoptymalizować ten proces dalej? Czy to jest tak dobre, jak to tylko możliwe? Działa dobrze na moim lokalnym serwerze, ale obawiam się, że tylko kilku użytkowników może przeciążyć serwer na żywo (host udostępniony) ze wszystkimi żądaniami i zapętleniami.
Oto żywo DEMO można sprawdzić z Firebug http://pixbush.com/chat/chat.php
Prostota jest tym, co my jako programiści ** dążymy do **. –
Link nie działa. – kachar