Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

Постоянная загрузка в чате

Источник: realcoding.net

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

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

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

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

<?php

// Эти две строки нужны чтоб вечный цикл не
обрывался
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]."<br>\n";
}
$last_mess = count($base);
flush();
}
}
?>

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

Косяки
1. Первые строки могли не выводиться если бы мы не выводили в начале файла шапку из символов (<!-- --><!-- -->...).
2. Если пример не работает, то скачайте с сайта http://www.apache.org/ Apache версии 2 ! У меня на Apache 1.3.23 под Windows ничего не работало :(



Похожие статьи:
- Квартира для вашего сайта
- Введение в ASP
- Представление в Internet содержимого каталога средствами ASP
- Отладка CGI-скриптов на Perl
- Работа с cookies на Perl
- Java Server Pages
- Модуль mod_rewrite. Часть 1.
- Модуль mod_rewrite. Часть 4.
- Защита include-модулей от несанкционированного доступа
- О грамотном использовании БД MySQL
- Песня о слоганах: о чем сайт?
- Как читают web-пользователи?
- Использование сценариев для построения шаблонов HTML-страниц


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.001]