Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Кто в онлайн?
 
 автор: NiKRON   (20.02.2005 в 23:45)   письмо автору
 
 

Пишу чат, без использования sql. Только файлы.
Прекрасно работает, но как сделать чтоб когда юзер закрывает окно браузера чтобы он удалялся из списка тех кто находится в чате? Есть кнопка "ВЫХОД". Но многим в лом кликать по ней при выходе. Просто закрывают браузер, а ник их в списке остаётся. Может можно решить проблему через сессии, иили придётся записявать айпи, а потом пинговать? :)))

   
 
 автор: NiKRON   (20.02.2005 в 23:49)   письмо автору
 
   для: NiKRON   (20.02.2005 в 23:45)
 

Извините, я не хотел четыре раза помещать тему. Просто ошибку всёвремя выдавал [ read timeout ] вот и пробовал несколько раз :))

   
 
 автор: cheops   (21.02.2005 в 00:40)   письмо автору
 
   для: NiKRON   (20.02.2005 в 23:45)
 

Хм... а как храняться пользователи on-line? Для того, чтобы предложить решение нужно больше информации по организации этого списка.

   
 
 автор: NiKRON   (21.02.2005 в 00:57)   письмо автору
 
   для: cheops   (21.02.2005 в 00:40)
 

Они хранятся в отдельном текстовом файле в каждой строке по юзеру.
например:
...
nickname|login|
NiKRON|nikron|
cheops|cheo|
...
Читаются php-скриптом и выводятся во фрейм.

   
 
 автор: NiKRON   (21.02.2005 в 21:43)   письмо автору
 
   для: NiKRON   (20.02.2005 в 23:45)
 

Неужели никто не может помочь?
Хотя бы обьясните как работают системы "Кто в онлайн"?

   
 
 автор: Crux   (21.02.2005 в 21:47)   письмо автору
 
   для: NiKRON   (21.02.2005 в 21:43)
 

сказать мне по этому поводу нечего, но на форуме уже был разговор о принципах определения "кто в онлайн", например здесь:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=1992

   
 
 автор: cheops   (21.02.2005 в 22:15)   письмо автору
 
   для: NiKRON   (21.02.2005 в 21:43)
 

Если необходимо автоматически удалять старых пользователей из on-line листа, то в этот массив необходимо добавить время. Желательно в секундах с 1 января 1970 года (возвращает функция time()). Данное время следует обновлять при каждой перезагрузки страницы посетителем.
nickname|login|12243544365|
NiKRON|nikron|12243544365|
cheops|cheo|12243544365|

В этом случае при обнавлении какой-нибудь посещаемой страницы (или по демону cron) вы сможете запускать скрипт очистки, который будет шерстить этот список и удалять тех, чьё время последнего посещения меньше, чем текущее минус 20 минут (ну или 10-15). Файл будет дёргаться часто имеет смысл выделить под это дело директорию, а под каждого пользователя файл - тогда удаление пользователя будет сводится к удалению файла.

   
 
 автор: NiKRON   (21.02.2005 в 22:24)   письмо автору
 
   для: NiKRON   (20.02.2005 в 23:45)
 

Спасибо. Всё понял.

   
 
 автор: isset   (21.02.2005 в 23:27)   письмо автору
 
   для: NiKRON   (21.02.2005 в 22:24)
 

У Бородина используется пинг...

   
 
 автор: NiKRON   (22.02.2005 в 00:38)   письмо автору
 
   для: NiKRON   (21.02.2005 в 22:24)
 

Нет. Всё-таки не всё понял.
Работа со временем у меня затрудняется. Я записываю время в файл потом считываю, допустим преобразовываю в число, и отнимаю от текущего времени.
А если текущее время 00:00:17 а записанно допустим 23:59:56.
И получится чёрти что. Вот как решить такую проблему? Или я туплю где и не следовало бы? :))

   
 
 автор: isset   (22.02.2005 в 01:23)   письмо автору
 
   для: NiKRON   (22.02.2005 в 00:38)
 

UNIX_TIME это число в секундах, значит надо просто из второго значения отнять первое и сравнить, если разница меньше 300 (что равно 5 минутам), значит пользователя выкидываем. Только вдруг пользователь просто отошел от компа?

   
 
 автор: NiKRON   (22.02.2005 в 01:50)   письмо автору
 
   для: isset   (22.02.2005 в 01:23)
 

В том то и дело. Но вообще во многих чатах я видел результат сразу после того как чел уходил. Сразу в чате пишут:
Вася свалил...

   
 
 автор: glsv (Дизайнер)   (23.02.2005 в 01:16)   письмо автору
 
   для: NiKRON   (22.02.2005 в 01:50)
 

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

<META HTTP-EQUIV="Refresh" CONTENT="5; URL=page.php">

Если нет обращения раз в 5 секунд, то пользователь ушел.

   
 
 автор: NiKRON   (24.02.2005 в 01:14)   письмо автору
 
   для: glsv (Дизайнер)   (23.02.2005 в 01:16)
 

Это-то понятно, я сделаю другую возможность, чтоб пользователь мог сам выбирать частоту обновления окна. До 30 сек, думаю лимита поставить. Ну а если больше 30 сек, то бай-бай.
Всем спасибо!

   
 
 автор: cheops   (22.02.2005 в 01:54)   письмо автору
 
   для: NiKRON   (22.02.2005 в 00:38)
 

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования