Вроде как вы искали что-то по теме "ajax"

Jquery comet да и просто comet

November 9, 2007 Web разработка

Comet - это архитектура веб-приложений, в которой сервер посылает данные клиенту (обычно браузеру) асинхронно. При использовании comet клиент не должен периодически опрашивать сервер для проверки наличия обновлений. Таким образом экономится трафик и уменьшается нагрузка на сервер (не нужно выдавать клиенту пустые ответы о том, что обновлений нет). При классическом подходе для уменьшения нагрузки обычно увеличивают таймаут между опросами сервера, но тогда возникает другая проблема - клиент получает данные с задержкой. В архтектуре comet данные клиенту посылаются сразу, как только они обновились.

Теоретически, comet - это лишь идея, которая не подразумевает конкретных способов реализации. Я приведу примеры двух способов, которые взяты отсюда, но переписаны с prototype’а на jquery.

1. Скрытый iframe. (forever-frame)

Смысл: на странице создается невидимый iframe, в котором в бесконечном цикле выводятся методы обновляющие данные на странице.

Пример был взят элементарный: клиенту передается текущее время на сервере:

В iframe выводится:

while(1) {echo '<script type="text/javascript">';
 
echo 'comet.printServerTime('.time().');';
 
echo '</script>';
 
flush(); //шлем
 
sleep(1); //процессор отдыхает
 
}

Скачать пример

Естественно, при таком использовании в крупных проектах возникает немало проблем, одна из которых - огромное число открытых одновременно соединений. Популярные http серверы были написаны с расчетом на класическую архитектуру web (от которой ajax в плане нагрузки на сервер в общем-то не сильно отличается), потому в крупных comet проектах обычно используются другие серверы. Например Caplin Liberator, который работает с финансовыми приложениями и способен держать на соединении 10,000 пользователей, посылая им до 4,000,000 сообщений в секунду.

Другая проблема: фаерволы и прокси. Многие прокси буферизируют сообщения так, что они передаются клиенту тогда когда набирают определенный объем. Фаерволы часто настроены так, что обрывают слишком длительные соединения.

2. Jquery Comet. (long-polling)

Смысл: используются длительные запросы к серверу, клиенту информация выдается как только она обновится. При ошибке или после успешного запроса серверу посылается повторный.

while ($currentmodif <= $lastmodif) // check if the data file has been modified
 
{
 
sleep(1); //разгружаем процессор
 
clearstatcache();
 
$currentmodif = filemtime($filename);
 
}
 
send_data_to_client();

Пример - простенький чат (немного глючненький, простите), который общается с сервером по типу comet.

Такой вариант - более жизненный чем предыдущий (iframe). При более-менее частом обновлении данных серьезных проблем он не создает, в тоже время снижая количество запросов и трафик сервера. Выводы полезности такого подхода и графики латентности запросов описаны в этой статье.

Скачать 2й пример

Статья о comet на википедии
Comet Daily