Я работаю над простым приложением чата, вероятно, от 10 до 20 пользователей на комнату.
Скрипт, который запрашивает в базе данных новые сообщения, выглядит слишком простым для всех запросов, которые он получит.
Ниже приведен блок кода, который зацикливается на новые сообщения, остальная часть сценария просто получает переменные, конструкцию запроса и объект ответа 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;
}
}
Блок выше запроситбаза данных для новых сообщений каждую секунду в течение 10 секунд, если после 10 секунд нет новых сообщений, она уведомит об этом браузер.Браузер ждет 5 секунд и затем отправляет другой запрос для получения новых сообщений.
Однако, если скрипт находит новые сообщения, браузер немедленно запросит больше новых сообщений, как только он получит ответ с новыми сообщениями отсервер.
Этот процесс продолжается и продолжается ...
Так, как я могу оптимизировать этот процесс дальше?Это так хорошо, как это получается?Работает нормально на моем локальном сервере, но я боюсь, что только несколько пользователей могут перегрузить живой сервер (общий хост) со всеми запросами и циклами.
Вот живая демонстрация, которую вы можете проверить с помощью firebug http://pixbush.com/chat/chat.php