Понедельник, 15.06.2026, 18:49
Приветствую Вас Гость | RSS
Поиск по каталогу
Главная страница | Каталог статей | Регистрация | Вход

Информационные технологии
Форма входа
Меню сайта

Категории каталога
php [246]
perl [1]
perl
ASP [1]
AJAX [0]

Друзья сайта

Наш опрос
Оцените мой сайт
Всего ответов: 69

Начало » Статьи » Web программирование » php

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



При постоянной загрузке окна чата, необходимо использовать функцию 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 ничего не работало :(
Категория: php | Добавил: freeone (09.05.2007) | Автор: Сергей Овсянников
Просмотров: 586 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright Информационные технологии © 2006