|
|
|
| Может кто поможет?
Расскажите логику скрипта определения онлайн пользователя на форуме. Как это делается в чате я посмотрел в поиске на вашем форуме, но к форуму это не подходит.
Например, если человек смотрит один пост к примеру часа два и не кликает по ссылкам (длинный пост попался), то он уйдет из онлайн, так как время обращения к серверу было последний раз. Ставить время проверки обращений более 20 минут не имеет смысла.
Если человек зашел на 10 минут, то он будет висеть в онлайн, хотя вышел. | |
|
|
|
|
|
|
|
для: holst
(08.12.2005 в 09:25)
| | Понятие онлайн не существует и не определить по средставам протокола HTTP. Поэтому считают онлайн по последнему обращению к серверу. Так везде. | |
|
|
|
|
|
|
|
для: Artem S.
(08.12.2005 в 09:38)
| | То есть никак (
А можно хотя бы узнать что с форума кто-то ушел. То есть не разрушил сессию кнопкой выход, а просто закрыл окно. Тогда файл с сессией не удалаяется с сервера, и опять остается ждать время обращения к серверу.
То есть нужно както узнать, что пользователь закрыл окно. | |
|
|
|
|
|
|
|
для: HoLsT
(08.12.2005 в 09:59)
| | Нельзя! | |
|
|
|
|
|
|
|
для: Artem S.
(08.12.2005 в 10:53)
| | Точно сказать нелься, ушел пользователь или нет, а примерно можно!
Нужно создать таблицу в БД, и записывать в нее всех пользователей обращающихся в сайту однажды, считать их количество, но перед этим удалять из нее все записи, которые по времени превыщают интервал, ну например на 5-10 мин.! | |
|
|
|
|
|
|
|
для: holst
(08.12.2005 в 09:25)
| | Artem S. прав, протокол HTTP не является сессионным - поэтому нельзя точно определить момент выхода пользователя - такая особенность появится только в протоклах следующего покаления, но до их повсеместного внедрения ещё очень долго. | |
|
|
|
|
|
|
|
для: cheops
(08.12.2005 в 12:56)
| | А можно насчет этого поподробнее? Что это за протоколы такие интересные? | |
|
|
|
|
|
|
|
для: Киналь
(08.12.2005 в 19:13)
| | Ну это проект Internet2 и ещё парочка - они пока в виде закрытых сетей существуют. В них протоколы будут сессионные, но вот например FTP - сессионный протокол, пока вы сидите на связи можно точно сказать: пользуютесь вы им или нет, а HTTP - нет, запросил, получил ответ и все отношения завершены. | |
|
|
|
|
|
|
|
для: cheops
(09.12.2005 в 01:22)
| | А можно просматривать логи Apach'а. И таким образом определять когда посетитель ушел с сайта??? | |
|
|
|
|
|
|
|
для: holst
(09.12.2005 в 06:55)
| | Да можно все просматривать, только суть не в этом )
Работает ведь все как? Броузер делает запрос на сервер, скажем простой рефреш, или кликает по ссылке. Сервер это обрабатывает и (если считает нужным) - возвращает броузеру ответ - запрашиваемую страницу. После этого броузер и сервер дружно забывают о существовании друг друга до тех пор пока юзер снова не обратится к серверу. В логах Апача ну никак не может фиксироваться то смотрит ли юзер свою страницу на своем компе ) Это ЕГО страница, он может вообще вырубить интернет и спокойно ее проссматривать, так как страница находится в памяти его компа (ну и скорее всего на диске в кеше) В чате так нельзя потому что чат постоянно рефрешится - то есть броузер с сервером постоянно обмениваются информацией. А в форумах такого рефреша нет автоматического. Ну конечно можно использовать программы, прибамбасы к броузеру, которые бы делали рефреш. Только это уже выбор юзера - он сам решает нужен ли ему такой вариант. Да, ну еще можно конечно трояна залить ))) | |
|
|
|
|
|
|
|
для: cheops
(09.12.2005 в 01:22)
| | Однако понятие "сессия" чаще всего употребляется именно с HTTP протоколом )
А ведь получается что это ошибочное понятие, фактически постоянного коннекта нет, сессией можно считать лишь кратковременный обмен между броузером и сервером, а никак не длительный процесс многократного обмена в течении которого броузер может использовать для идентификации один и тот же ID )
Более того даже FTP не он-лайновый протокол в полном смысле этого слова, как и любой из семейства TCP/IP так как не используется один и тот же канал, а пакеты, часто идущие по разным каналам. | |
|
|
|
|
|
|
|
для: Алекс
(09.12.2005 в 07:17)
| | Да это я все понял. Но ведь apache знает что юзер ушел с сайта. Эта запись в логах остается. Можно ведь написать скрипт просмотра и потом обновлять пользователей онлайн по логам веб-сервера. | |
|
|
|
|
|
|
|
для: HoLsT
(09.12.2005 в 07:36)
| | Откуда Апач знает? Естественно, все что так или иначе фиксируется Апачем можно вытащить и проверить, и обработать и т.д. Но только что в этих логах? Простые GET запросы. Что значит ушел с сайта? Ну да, если юзер нажмет - выход, то да, конечно он зафиксирует. Но это значит что в следующий раз ему придется снова логиниться, сессии и куки уже не сработают.
Кто так делает? Да почти никто. Есть смысл разлогиниться только из интернет банков и т.д в этом духе. Так большинство и поступает - они просто закрывают страницу в броузере, банально свертывают окно, переключают панель задач и т.д. или выключают комп (или даже вытаскивают шнур из сети, вырубают монитор, кто как)). Эти вещи просто так сервер зафиксировать не в состоянии в принципе. Прпавда при одном но - если не заливать на комп юзеру троян, который может выглядеть как обычный ява скрипт, фиксирующий закрытие, сворачивание окна и отправляющий на сервер инфу об этом, что там уже зафиксирует и апач, да и просто обычные скрипт, который закинет это в базу и т.д. | |
|
|
|