[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Времяпровождение посетителя на одной страничке сай
DenOk
Такая задача. Входит посетитель на сайт, незарегестрированный, и заходит на страничку с текстом. Нужно расчитать время, которое он провел именно на этой страничке и записать его в базу, для статистики. Каким образом это возможно реализовать?



Спустя 3 минуты, 50 секунд (25.05.2009 - 11:50) Kuliev написал(а):
DenOk
Записывай id сессии и ip адрес и проверяй потом.

Спустя 1 минута, 27 секунд (25.05.2009 - 11:52) waldicom написал(а):
А какие идеи есть?

Спустя 4 минуты, 34 секунды (25.05.2009 - 11:56) DenOk написал(а):
Т.е. мне не важно кто именно зашел, важно просто время которое посетитель провел на странице, например с статьей о автомобиле, и в базу к этой статье прибавляю сколько на нем просидели посетители. Сам IP мне не нужен.
Получается сессию открывать при открытии этой сранички, а закрывать когда ее?

Спустя 57 секунд (25.05.2009 - 11:57) FatCat написал(а):
При каждом запросе страницы апдейтить сессию.
В сессии пишется time() апдейта.
В функции апдейта вычитать время прошлого апдейта из текущего time() - это и будет время пребывания на странице.

Спустя 4 минуты, 32 секунды (25.05.2009 - 12:02) DenOk написал(а):
спасибо, будем пробовать ...

Спустя 2 часа, 38 минут, 9 секунд (25.05.2009 - 14:40) glock18 написал(а):
Цитата
При каждом запросе страницы апдейтить сессию.
В сессии пишется time() апдейта.
В функции апдейта вычитать время прошлого апдейта из текущего time() - это и будет время пребывания на странице.


Насколько я себе представляю специфику задачи, неверный подход.

Пользователь может открыть страницу, а после попросту закрыть браузер. Либо читать статью 15 минут и так же закрыть браузер. Этот случай не будет учтен.

Можно так:
1. каждую минуту делать запрос к серверу и говорить что-то типа "я читаю уже 1 минуту".
Достаточно сложный, если рассматривать все возможные нюансы. Плюс ко всему придется делать очень много запросов на сервер.

Самый лучший, по-моему, здесь:

в документе установить функцию на событие onBeforeUnload или на onUnload. Это позволит делать всего один запрос, когда документ "выгружается" - это происходит если пользователь переходит по ссылке, напрямую вводит ее в строке запроса или вовсе закрывает браузер. На это событие тебе нужно просто отправить время, которое пользователь провел на странице, на сервер. Ну и в начале загрузки нужно таймер запустить, чтобы время засекал.

Спустя 1 час, 48 минут, 21 секунда (25.05.2009 - 16:28) FatCat написал(а):
Цитата (glock18 @ 25.05.2009 - 14:40)
Этот случай не будет учтен.

Зато он и не будет учитывать случай, когда пользователь ушел спать, оставив включенный компьютер; или когда пользователь открыл другое окно браузера, а это забыл закрыть.

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

Спустя 16 часов, 4 минуты, 31 секунда (26.05.2009 - 08:33) glock18 написал(а):
Да, пожалуй, этот подход лучше. В любом случае, оба способа имеют достаточно недостатков... Так сказать, (это про подход гугл-аналитикс и про то что вы предложили) симуляция достаточно близкая к реальности.

Спустя 13 часов, 57 минут, 36 секунд (26.05.2009 - 22:31) HardWoman написал(а):
Цитата
Зато он и не будет учитывать случай, когда пользователь ушел спать, оставив включенный компьютер; или когда пользователь открыл другое окно браузера, а это забыл закрыть.

Это уж точно мой вариант
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.