Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > чат, без обновления


Автор: want_php 25.7.2003, 16:31
Сделал простой чат - вот только не могу понять как вот в нормальных чатах делают что фреймы как бы не обновляется - а дополняется
мой чат - он ещё плохой можете посмотретьна http://nikolaev.dp.ua/chat/
и ещё - когда пользователь закрывает чат - как узнать, что он уже ушёл?
Я делал фрейм маленький и вставлял просто onUnLoad=виндов опен(чтото.пхп)
на ту что-топхп передовал айдишку и скрип говорил типа всё, пока юзер и ставил ему оф лайн - чтоб в списке (в чате его не было)


Вообщем понятно?


заранее спасибо


Автор: Vaulter 26.7.2003, 23:58
Цитата(want_php @ 25.7.2003, 08:31)
Сделал простой чат - вот только не могу понять как вот в нормальных чатах делают что фреймы как бы не обновляется - а дополняется
мой чат - он ещё плохой можете посмотретьна http://nikolaev.dp.ua/chat/
и ещё - когда пользователь закрывает чат - как узнать, что он уже ушёл?
Я делал фрейм маленький и вставлял просто onUnLoad=виндов опен(чтото.пхп)
на ту что-топхп передовал айдишку и скрип говорил типа всё, пока юзер и ставил ему оф лайн - чтоб в списке (в чате его не было)

на счет фреймов не наю
а оффлайн моно так сделать по бырому:

есть таблица: айпи юзера - время

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

Автор: ssb 3.8.2003, 22:59
Чтобы не обновлялся, это не на РНР. Можно на Си написать, правда не знаю, как :-(

Автор: Sattu 4.8.2003, 00:01
Цитата
Чтобы не обновлялся, это не на РНР. Можно на Си написать, правда не знаю, как :-(

Можно и на РНР. И довольно просто.

Автор: arial 4.8.2003, 01:44
Цитата(Sattu @ 4.8.2003, 01:01)
Цитата
Чтобы не обновлялся, это не на РНР. Можно на Си написать, правда не знаю, как :-(

Можно и на РНР. И довольно просто.

Так, так, очень интересно. smile.gif

Автор: ssb 4.8.2003, 09:33
Цитата(Sattu @ 4.8.2003, 00:01)
Можно и на РНР. И довольно просто.

Ну... и как же?

Автор: Master 4.8.2003, 09:59
Об этом уже рассуждали.
http://forum.vingrad.ru/index.php?act=ST&f=6&t=9829&hl=ЧАТ&s=

Автор: Sattu 4.8.2003, 23:58
Даю простой пример:

<?
set_time_limit(0);
....
while(1=1){
//вывод текста + обработка событий
}
?>

Автор: Sattu 5.8.2003, 00:22
Цитата
Об этом уже рассуждали.
http://forum.vingrad.ru/index.php?act=ST&f...=9829&hl=ЧАТ&s=

Извени Master, но там нет ничего подходящего сабжу. (ну разве слово "чат" ;) ).
Имхо делать чат с фреймами и ЯваСкриптом, который подгружает текст из другого фрейма - вчерашний день.

Надо сделать скрипт, который работает как программа. То есть пока не закроют окно.

Итак. Фреймы:
1) вывод текста
2) поле для ввода текста
(это главные, другие - по вкусу).

фрейм №2 - простой ХТМЛ с формой + скрипт (именно этот скрипт пишет текст в БД).
фрейм №1 - то, что я написал выше.

думаю объяснил дохотчиво.
Если не понятно - переспрашивайте.

Автор: Master 5.8.2003, 09:43
Цитата
Надо сделать скрипт, который работает как программа. То есть пока не закроют окно.

omg.gif

Автор: MuToGeN 5.8.2003, 10:26
Цитата
while(1=1){
//вывод текста + обработка событий
}
А о CPU Usage никто не подумал?

В виндах програма работает, пока не получит WM_CLOSE (или WM_DESTROY, точно не помню), а для PHP скриптов пока что такого не придумали. Можно создать CGI-приложение, которое будет получать SIGQUIT от апача, как только разорвется коннект... В PHP этого не отследишь.

Автор: Sattu 5.8.2003, 19:17
Все нормально работает. Эта идея давно не новая (в плане использования в РНР). Я лично видел тмного таких чатов.

Сильно она ЦПУ не грузит. Сорри, бенчмарков навести не могу (за неимением оных у меня на даный момент).

Все прекрасно работает. Есть одна оговорка. Скрипт не грузит машину постоянно, он делает выборки раз в 0,5 - 1 сек.

Автор: Sattu 5.8.2003, 19:18
Уточню:

<?
set_time_limit(0);
....
while(1=1){
usleep(500);
//вывод текста + обработка событий
}
?>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)