PHP: Анти-волновая защита чата
Очень многие чаты содержат фреймы, в которых отображаемые страницы
обновляются с определенным интервалом времени.
Каждое такое обноврение нагружает процессор сервера.
/=\ 1 запрос
/ \
________/ \_____
Это пример запроса на обновление от одной страницы.
Когда страниц много (в чате, например) то можно наблюдать следующую картину:
/=\ 1 запрос
/ \
________/ \_____
/=\ 2 запрос
/ \
________/ \_____
/====\
/ \
/ \ суммарная загрузка сервера
/ \
________/ \_____
Не трудно заметить, что одновременное обращение к серверным ресурсам
заставляет сервер сильнее напрягаться, что приводит к более долгой
обработке каждого скрипта в отдельности (всем по чуть-чуть).
Этот эффект нагрузки на сервер можно назвать волновым эффектом.
С ним нужно бороться. Один из способов - стараться не создавать волн.
Постороим анти-волновую защиту чата, написанную на php.
Обновление страниц осуществляется с помощью META тега REFRESH:
<META HTTP-EQUIV='Refresh' Content='число; URL=страница'>
Наша задача, варьировать число при каждой перезагрузке
страницы.
Оптимально пользоваться формулой x = x + rand(0, x div 5);
т.е. обновление страницы происходит через x, ..., x + (x div 5) секунд.
Для х=10 секундам, обновление возможно через 10, 11, 12 секунд.
Для х=100 секундам, обновление возможно через 100, 101, ..., 120 секунд.
Код анти-волновой защиты на php будет выглядеть так (для 100 секунд):
<?php $x=100+rand(0,20); ?>
<META HTTP-EQUIV='Refresh' Content='<?php echo x; ?>; URL=страница'>
Приятных часов программирования.
Офис-Трейд (Москва):
офисная мебель - отличная офисная мебель (001)
|
|
Автор, разработчик: Шаров Евгений (gcmsite@yandex.ru)
(c) 2000-2009 GCM-Site - системное и веб-программирование
Цитирование материалов сайта возможно только при наличии гиперссылки
|