|
|
|
| Пишу чат, без использования sql. Только файлы.
Прекрасно работает, но как сделать чтоб когда юзер закрывает окно браузера чтобы он удалялся из списка тех кто находится в чате? Есть кнопка "ВЫХОД". Но многим в лом кликать по ней при выходе. Просто закрывают браузер, а ник их в списке остаётся. Может можно решить проблему через сессии, иили придётся записявать айпи, а потом пинговать? :))) | |
|
|
|
|
|
|
|
для: NiKRON
(20.02.2005 в 23:45)
| | Извините, я не хотел четыре раза помещать тему. Просто ошибку всёвремя выдавал [ read timeout ] вот и пробовал несколько раз :)) | |
|
|
|
|
|
|
|
для: NiKRON
(20.02.2005 в 23:45)
| | Хм... а как храняться пользователи on-line? Для того, чтобы предложить решение нужно больше информации по организации этого списка. | |
|
|
|
|
|
|
|
для: cheops
(21.02.2005 в 00:40)
| | Они хранятся в отдельном текстовом файле в каждой строке по юзеру.
например:
...
nickname|login|
NiKRON|nikron|
cheops|cheo|
...
Читаются php-скриптом и выводятся во фрейм. | |
|
|
|
|
|
|
|
для: NiKRON
(20.02.2005 в 23:45)
| | Неужели никто не может помочь?
Хотя бы обьясните как работают системы "Кто в онлайн"? | |
|
|
|
|
|
|
|
для: NiKRON
(21.02.2005 в 21:43)
| | сказать мне по этому поводу нечего, но на форуме уже был разговор о принципах определения "кто в онлайн", например здесь:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=1992 | |
|
|
|
|
|
|
|
для: 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
(20.02.2005 в 23:45)
| | Спасибо. Всё понял. | |
|
|
|
|
|
|
|
для: NiKRON
(21.02.2005 в 22:24)
| | У Бородина используется пинг... | |
|
|
|
|
|
|
|
для: NiKRON
(21.02.2005 в 22:24)
| | Нет. Всё-таки не всё понял.
Работа со временем у меня затрудняется. Я записываю время в файл потом считываю, допустим преобразовываю в число, и отнимаю от текущего времени.
А если текущее время 00:00:17 а записанно допустим 23:59:56.
И получится чёрти что. Вот как решить такую проблему? Или я туплю где и не следовало бы? :)) | |
|
|
|
|
|
|
|
для: NiKRON
(22.02.2005 в 00:38)
| | UNIX_TIME это число в секундах, значит надо просто из второго значения отнять первое и сравнить, если разница меньше 300 (что равно 5 минутам), значит пользователя выкидываем. Только вдруг пользователь просто отошел от компа? | |
|
|
|
|
|
|
|
для: isset
(22.02.2005 в 01:23)
| | В том то и дело. Но вообще во многих чатах я видел результат сразу после того как чел уходил. Сразу в чате пишут:
Вася свалил... | |
|
|
|
|
|
|
|
для: NiKRON
(22.02.2005 в 01:50)
| | В чатах обновление страницы идет очень часто. Например, по заголовку
<META HTTP-EQUIV="Refresh" CONTENT="5; URL=page.php">
|
Если нет обращения раз в 5 секунд, то пользователь ушел. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(23.02.2005 в 01:16)
| | Это-то понятно, я сделаю другую возможность, чтоб пользователь мог сам выбирать частоту обновления окна. До 30 сек, думаю лимита поставить. Ну а если больше 30 сек, то бай-бай.
Всем спасибо! | |
|
|
|
|
|
|
|
для: NiKRON
(22.02.2005 в 00:38)
| | Воспользовавшись функцией time() - у вас не будет проблем, так как она возвращает число секунд прошедших с 1970 года - у вас не будет относительной привязки к полуночи - у вас будет абсолютное время. | |
|
|
|