Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.08.2009, 15:13
Интересующийся
Отправить личное сообщение для onejsquestion Посмотреть профиль Найти все сообщения от onejsquestion
 
Регистрация: 27.07.2009
Сообщений: 24

Аналитика посещения сайта на JS
Уважаемые знатоки JavaScript!
Есть задача: получить информацию о посетителе странички сайта (как это делает допустим счетчик liveInternet), а именно - как долго провел времени посетитель на этой странице с момента его захода, до закрытия сайта.
Буду Вам очень благодарен за пример ее решения!
Ответить с цитированием
  #2 (permalink)  
Старый 12.08.2009, 17:54
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

посылать с помощью AJAX-а(транспорт script) раз в 10 секунд запрос сообщающий, что пользователь все еще на сайте.
серверным скриптом сохранять и анализировать эту информацию
Ответить с цитированием
  #3 (permalink)  
Старый 12.08.2009, 20:25
Интересующийся
Отправить личное сообщение для onejsquestion Посмотреть профиль Найти все сообщения от onejsquestion
 
Регистрация: 27.07.2009
Сообщений: 24

А если система планируется высоконагруженная? не посылает же скрипт liveinternet каждые 10 секунд запрос на сервер.

есть ли еще какие-нибудь решения?
Ответить с цитированием
  #4 (permalink)  
Старый 12.08.2009, 21:45
Аспирант
Отправить личное сообщение для haha Посмотреть профиль Найти все сообщения от haha
 
Регистрация: 02.08.2009
Сообщений: 40

тогда так:
при входе на страницу засечь время.
при выходе отправлять запрос с истекшим временем.

на сервере время будет складываться.
Ответить с цитированием
  #5 (permalink)  
Старый 12.08.2009, 21:50
Интересующийся
Отправить личное сообщение для onejsquestion Посмотреть профиль Найти все сообщения от onejsquestion
 
Регистрация: 27.07.2009
Сообщений: 24

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

на сервере время будет складываться.
Спасибо!
А как засечь, что юзер покинул определенный сайт, а не страницу?
Ответить с цитированием
  #6 (permalink)  
Старый 12.08.2009, 22:29
Аспирант
Отправить личное сообщение для haha Посмотреть профиль Найти все сообщения от haha
 
Регистрация: 02.08.2009
Сообщений: 40

Цитата:
А как засечь, что юзер покинул определенный сайт, а не страницу?
Через сессию. НО...

Вариант довольно громоздкий, но пока в голове вертится только он.

Каждое новое открывание страницы засекает время и отправляет "я открылся", на что сервер создает отдельного смотрителя(watcher по-аглицки) и отвечает каким-нибудь идентификатором (watcher-ID) для новоиспеченного вотчера. Затем при закрытии страницы будет отправляться "я закрылся спустя <столько-то>, слышишь вотчер-ИДэ?". И соответствующий вотчер зафиксирует значение времени.

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

Ну и "покидание" сайта обязательно отразится на сессии. Так что в завершающей функции нужно проконтролировать вотчеры: "убить" незавершенные(будут ли?), правильно рассчитать, что-нибудь еще.

Вот, как бы, пример подсчёта. Детализировать его - Ваша задача.

P.S. Заинтересован в ознакомлении с рабочей версией.
Ответить с цитированием
  #7 (permalink)  
Старый 12.08.2009, 23:51
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

Сообщение от haha
при выходе отправлять запрос с истекшим временем.
как вы предполагаете отправлять запрос при закрытии страницы?
на это нельзя повесить событие
сессия при этом не закрывается! убивается куки сессии(при стандартных настройках PHP к примеру), но сама сессия еще достаточно долго может прожить(опять-таки зависит от настроек)
Ответить с цитированием
  #8 (permalink)  
Старый 13.08.2009, 00:10
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gvozd
на это нельзя повесить событие
unload/beforeunload не работает только в опере и то при некоторых условиях вполне себе работает.
Ответить с цитированием
  #9 (permalink)  
Старый 13.08.2009, 08:59
Аспирант
Отправить личное сообщение для haha Посмотреть профиль Найти все сообщения от haha
 
Регистрация: 02.08.2009
Сообщений: 40

Сообщение от Gvozd Посмотреть сообщение
как вы предполагаете отправлять запрос при закрытии страницы?
на это нельзя повесить событие
сессия при этом не закрывается! убивается куки сессии(при стандартных настройках PHP к примеру), но сама сессия еще достаточно долго может прожить(опять-таки зависит от настроек)
При закрытии страницы на клиенте приходят фиксаторы вотчеров. Если сессия и продолжит жить, то вотчеры - нет. Незафиксированные вотчеры, для которых не придет запроса с неадекватно закрытых страниц, отсеятся или будут вычисляться особенным методом, получится погрешность в статистике.
И вот метод вычисления на сервере будет направлен на уменьшение погрешности, а не js. Для js важно только отправлять все вовремя. ( load unload )
Ответить с цитированием
  #10 (permalink)  
Старый 14.08.2009, 08:42
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

во-первых, есть еще нюанс, что пользователь может находиться на странице дольше, чем продолжительность сессии (т.е. все-таки ajax-запросы нужно посылать изредка). Можно посылать запросы "раз в сессию", если не пришел запрос - сессия была неадекватно закрыта

во-вторых, то, что пользователь не закрыл страницу не значит, что он ее просматривает
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Самая лучшая книга по JS? ulandj Оффтопик 2 06.04.2009 11:35
Большой JS файл. Кэш IE6. deadpsh Общие вопросы Javascript 1 26.11.2008 23:38
Загрузка дополнительного js кода с сервера Anonymous2008 Общие вопросы Javascript 5 20.11.2008 12:33
опубликуйте пожалуйста функционал JS scuter Сайт Javascript.ru 21 05.06.2008 17:44
подключение стороннего js скрипта friend Общие вопросы Javascript 2 24.05.2008 19:51