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

Форум PHP

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

 

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

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

тема: Онлайн пользователи на форуме
 
 автор: holst   (08.12.2005 в 09:25)   письмо автору
 
 

Может кто поможет?
Расскажите логику скрипта определения онлайн пользователя на форуме. Как это делается в чате я посмотрел в поиске на вашем форуме, но к форуму это не подходит.

Например, если человек смотрит один пост к примеру часа два и не кликает по ссылкам (длинный пост попался), то он уйдет из онлайн, так как время обращения к серверу было последний раз. Ставить время проверки обращений более 20 минут не имеет смысла.

Если человек зашел на 10 минут, то он будет висеть в онлайн, хотя вышел.

   
 
 автор: Artem S.   (08.12.2005 в 09:38)   письмо автору
 
   для: holst   (08.12.2005 в 09:25)
 

Понятие онлайн не существует и не определить по средставам протокола HTTP. Поэтому считают онлайн по последнему обращению к серверу. Так везде.

   
 
 автор: HoLsT   (08.12.2005 в 09:59)   письмо автору
 
   для: Artem S.   (08.12.2005 в 09:38)
 

То есть никак (

А можно хотя бы узнать что с форума кто-то ушел. То есть не разрушил сессию кнопкой выход, а просто закрыл окно. Тогда файл с сессией не удалаяется с сервера, и опять остается ждать время обращения к серверу.

То есть нужно както узнать, что пользователь закрыл окно.

   
 
 автор: Artem S.   (08.12.2005 в 10:53)   письмо автору
 
   для: HoLsT   (08.12.2005 в 09:59)
 

Нельзя!

   
 
 автор: Artemy   (08.12.2005 в 11:04)   письмо автору
 
   для: Artem S.   (08.12.2005 в 10:53)
 

Точно сказать нелься, ушел пользователь или нет, а примерно можно!
Нужно создать таблицу в БД, и записывать в нее всех пользователей обращающихся в сайту однажды, считать их количество, но перед этим удалять из нее все записи, которые по времени превыщают интервал, ну например на 5-10 мин.!

   
 
 автор: cheops   (08.12.2005 в 12:56)   письмо автору
 
   для: holst   (08.12.2005 в 09:25)
 

Artem S. прав, протокол HTTP не является сессионным - поэтому нельзя точно определить момент выхода пользователя - такая особенность появится только в протоклах следующего покаления, но до их повсеместного внедрения ещё очень долго.

   
 
 автор: Киналь   (08.12.2005 в 19:13)   письмо автору
 
   для: cheops   (08.12.2005 в 12:56)
 

А можно насчет этого поподробнее? Что это за протоколы такие интересные?

   
 
 автор: cheops   (09.12.2005 в 01:22)   письмо автору
 
   для: Киналь   (08.12.2005 в 19:13)
 

Ну это проект Internet2 и ещё парочка - они пока в виде закрытых сетей существуют. В них протоколы будут сессионные, но вот например FTP - сессионный протокол, пока вы сидите на связи можно точно сказать: пользуютесь вы им или нет, а HTTP - нет, запросил, получил ответ и все отношения завершены.

   
 
 автор: holst   (09.12.2005 в 06:55)   письмо автору
 
   для: cheops   (09.12.2005 в 01:22)
 

А можно просматривать логи Apach'а. И таким образом определять когда посетитель ушел с сайта???

   
 
 автор: Алекс   (09.12.2005 в 07:29)   письмо автору
 
   для: holst   (09.12.2005 в 06:55)
 

Да можно все просматривать, только суть не в этом )
Работает ведь все как? Броузер делает запрос на сервер, скажем простой рефреш, или кликает по ссылке. Сервер это обрабатывает и (если считает нужным) - возвращает броузеру ответ - запрашиваемую страницу. После этого броузер и сервер дружно забывают о существовании друг друга до тех пор пока юзер снова не обратится к серверу. В логах Апача ну никак не может фиксироваться то смотрит ли юзер свою страницу на своем компе ) Это ЕГО страница, он может вообще вырубить интернет и спокойно ее проссматривать, так как страница находится в памяти его компа (ну и скорее всего на диске в кеше) В чате так нельзя потому что чат постоянно рефрешится - то есть броузер с сервером постоянно обмениваются информацией. А в форумах такого рефреша нет автоматического. Ну конечно можно использовать программы, прибамбасы к броузеру, которые бы делали рефреш. Только это уже выбор юзера - он сам решает нужен ли ему такой вариант. Да, ну еще можно конечно трояна залить )))

   
 
 автор: Алекс   (09.12.2005 в 07:17)   письмо автору
 
   для: cheops   (09.12.2005 в 01:22)
 

Однако понятие "сессия" чаще всего употребляется именно с HTTP протоколом )
А ведь получается что это ошибочное понятие, фактически постоянного коннекта нет, сессией можно считать лишь кратковременный обмен между броузером и сервером, а никак не длительный процесс многократного обмена в течении которого броузер может использовать для идентификации один и тот же ID )

Более того даже FTP не он-лайновый протокол в полном смысле этого слова, как и любой из семейства TCP/IP так как не используется один и тот же канал, а пакеты, часто идущие по разным каналам.

   
 
 автор: HoLsT   (09.12.2005 в 07:36)   письмо автору
 
   для: Алекс   (09.12.2005 в 07:17)
 

Да это я все понял. Но ведь apache знает что юзер ушел с сайта. Эта запись в логах остается. Можно ведь написать скрипт просмотра и потом обновлять пользователей онлайн по логам веб-сервера.

   
 
 автор: Алекс   (09.12.2005 в 07:44)   письмо автору
 
   для: HoLsT   (09.12.2005 в 07:36)
 

Откуда Апач знает? Естественно, все что так или иначе фиксируется Апачем можно вытащить и проверить, и обработать и т.д. Но только что в этих логах? Простые GET запросы. Что значит ушел с сайта? Ну да, если юзер нажмет - выход, то да, конечно он зафиксирует. Но это значит что в следующий раз ему придется снова логиниться, сессии и куки уже не сработают.
Кто так делает? Да почти никто. Есть смысл разлогиниться только из интернет банков и т.д в этом духе. Так большинство и поступает - они просто закрывают страницу в броузере, банально свертывают окно, переключают панель задач и т.д. или выключают комп (или даже вытаскивают шнур из сети, вырубают монитор, кто как)). Эти вещи просто так сервер зафиксировать не в состоянии в принципе. Прпавда при одном но - если не заливать на комп юзеру троян, который может выглядеть как обычный ява скрипт, фиксирующий закрытие, сворачивание окна и отправляющий на сервер инфу об этом, что там уже зафиксирует и апач, да и просто обычные скрипт, который закинет это в базу и т.д.

   
Rambler's Top100
вверх

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