Форумы   Авторам статей    

Меню пользователя



Вход и регистрация недоступны в архивном режиме.


Партнеры






Опрос Населения

Форма отключена в архивном режиме.


Ссылки


Постоянная загрузка в чате
Автор: Сергей Овсянников
Категория: PHP
Дата публикации: Вт 26 сентября 2006
Просмотров: 303
Комментариев: 0

Долго я не мог найти ответ на вопрос о реализации постоянной загрузке страницы в чате, так же много раз натыкался на топики в форумах, где народ просто не знал почему же у них ничего не работает ! Сегодня я постараюсь ответить на все вопросы на конкретном примере...

При постоянной загрузке окна чата, необходимо использовать функцию flush(), которая выводит на экран буфер браузера. Например если у вас не до конца загрузилась таблица, то она не выведется в браузере, пока данные таблицы не будут получены до конца. Если вставить функцию flush() посередине этой таблички, то выведется та часть таблицы идущая до функции flush(), ну а позже когда данные таблицы загрузятся до конца (до тэга
), то на экран выведется остальная часть.

Так и в чате... Ваш скрипт вывода сообщений, "вечным" циклом сканирует базу на наличие новых сообщений, и если есть новые сообщения то выводит их - echo() и после этого вызывает функцию flush(), чтоб сообщения появились на экране.

Разберём конкретный пример:


// Эти две строки нужны чтоб вечный цикл не
обрывался
set_time_limit(0);
ignore_user_abort(true);
// Этот цикл выводит шапку. Если этого не делать, то первые
5-10 сообщений не будут сразу выводиться
for ($i = 0; $i < 20; $i++) {
echo "";
}
flush();
$last_mess = 0;
while (1 == 1) { // Вечный цикл
sleep(2);
$base = file("messages.dat");
if (count($base) > $last_mess) {// Если в базе есть новые строки
for ($i = $last_mess; $i < count($base); $i++) { // То циклом выводим их
echo $base[$i]."
\n";
}
$last_mess = count($base);
flush();
}
}
?>


Теперь запустите этот скрипт в браузере, и откройте в блокноте файл messages.dat.
Дописывайте в файл по строке и сохраняйте файл, и вы увидите как в окне браузера дописываются строки !
Вот и постоянная загрузка готова
Реклама




Статистика










Человек на сайте

0 Пользователей
2 Гостей


Copyright © 2007
Работает при помощи