Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Постоянная загрузка страницы в чате, хотелось бы обсудить... 
:(
    Опции темы
Chuck
Дата 14.6.2004, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: нет
Всего: 9



Нашел интерестную статью вот отсюда
Попробывал - работает, но хочется узнать, скоко человек выдержит такой чат???
И вообще кто как решал эту проблему!!!
Код
Автор: Сергей Овсянников, специально для Xlan.RU

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

При постоянной загрузке окна чата, необходимо использовать функцию 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 ничего не работало :(


Просто хочу обсудить, что народ скажет!!!
PM MAIL WWW GTalk   Вверх
GePo
Дата 14.6.2004, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: 1
Всего: 3



Это назвается садизм над сервером. Хостер ИМХО такого не одобрит. Лучше по старинке, через JS-обновление wink.gif
--------------------
PM MAIL WWW   Вверх
Chuck
Дата 14.6.2004, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: нет
Всего: 9



Цитата
Лучше по старинке, через JS-обновление

А как они на Mail.ru, допустим, сделали??
Цитата
Это назвается садизм над сервером

Знаю, у меня тож 78% процессорного времени сжирал sad.gif((
PM MAIL WWW GTalk   Вверх
Master
Дата 15.6.2004, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



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

хотя если это будет происходить на твоем сервере и тебя это устроит, то можеш и так сделать.


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
MuToGeN
Дата 15.6.2004, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Бред.

ignore_user_abort(true); - из-за этого оно становится еще более бредовым. Серверный поток не помирает при закрытии окна браузера или нештатного обрыва соединения.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Chuck
Дата 15.6.2004, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: нет
Всего: 9



Хорошо!!!
Я просто нашел статью и решил её обсудить!!!
Хотелось бы узнать ваши мысли по этому поводу, как по вашему лучше сделать постоянную загрузку в чате???? но не на JavaScript????
PM MAIL WWW GTalk   Вверх
Secandr
Дата 15.6.2004, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Chuck Я считаю что целесообразно использовать три метода:
1. тупо делать релоад
2. javascript, обновлять невидимый фрейм и добавлять сообщения в видимый
3. писать демона и клиента - аля irc



--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
MuToGeN
Дата 15.6.2004, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



ИМХО лучше с помощью специального ПО для чатов, отказаться от идеи веб-чата с постоянной загрузкой.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Chuck
Дата 16.6.2004, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: нет
Всего: 9



Интересно, а кто-нить знает, как работает майл чат???
PM MAIL WWW GTalk   Вверх
Secandr
Дата 16.6.2004, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Chuck
А что это? Опиши принцип работы.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
achmed
Дата 16.6.2004, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 12.4.2004

Репутация: нет
Всего: нет



я делал подобную вещь, у меня в системе болтался демон, а сги клиенты коннектились к нему
через unix сокет, все писал на Си, загрузка памяти минимальна, нагрузка на проц 0%, клиентов сидело дофига, все нормально, кстати так написан веб клиент irc.


PM MAIL   Вверх
Chuck
Дата 16.6.2004, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: нет
Всего: 9



Цитата
А что это? Опиши принцип работы.

Как что? Чат www.chat.mail.ru
PM MAIL WWW GTalk   Вверх
Secandr
Дата 16.6.2004, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Нет ну это извраение, пускать в чат только владельцев почты маил.ру.

Chuck Опиши всё же принцип работы, лень регистрировать емаил на mail.ru....



--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Chuck
Дата 16.6.2004, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: нет
Всего: 9



Цитата
пускать в чат только владельцев почты маил.ру.

Честно сказать, я не знал это!!! Прошу прошения!!!
Так вот! Чат из фреймов, но при отправке моего сообщения, оно через пару секунд появляется в общем чате, и не заметно обновление!!!
Не знаю, что ещё добавить, но помоему на JavaScript это не похоже!!!

PM MAIL WWW GTalk   Вверх
Secandr
Дата 17.6.2004, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 5
Всего: 39



Chuck скорей всего javascript и невидимый фрейм.
Вот мной писаный чат: http://www.plazma.ru/chat/
На маил.ру так же работает?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0676 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.