Как отслеживать время пользователя на сайте
Я ищу, чтобы отслеживать среднее время пользователей на веб-сайте (так же, как это делает аналитика Google) для внутреннего администрирования.
Какой самый простой способ сделать это?
Ответы
Ответ 1
Вы можете найти время следующими способами:
- Как только пользователь зайдет на ваш сайт, сохраните текущее время в cookie как "посещенное", и при следующем посещении вы можете его захватить, если он был установлен.
- И более дорогой метод: когда загружается страница, запускает js-таймер и выгружает страницу на сервер, время, которое пользователь отправил, и сохранит его на db.
- И если window.unload не работает в Opera, вы можете отправлять время на сервер каждые 5 секунд и сохранять его в БД.
Если вам нужно, я могу написать пример script.
UPDATE:
<!DOCTYPE html>
<html>
<head>
<title>Collect time</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function()
{
var start = null;
$(window).load(function(event) {
start = event.timeStamp;
});
$(window).unload(function(event) {
var time = event.timeStamp - start;
$.post('/collect-user-time/ajax-backend.php', {time: time});
})
});
</script>
</head>
<body>
</body>
</html>
И бэкэнд script:
<?php
$time = intval($_POST['time']);
if (!file_exists('data.txt')) {
file_put_contents('data.txt', $time . "\n");
} else {
file_put_contents('data.txt', $time . "\n", FILE_APPEND);
}
Но, как я уже сказал, он не будет работать в браузере Opera
Ответ 2
Главным образом, о котором я могу думать:
Когда пользователь сначала нажимает на страницу, вы регистрируете, скажем, свой IP-адрес, загруженную страницу и время. Затем, используя некоторые Javascript и AJAX, когда они покидают страницу, вы используете событие unload
для отправки обработчику AJAX, который записывает страницу и когда они уходят.
Вам нужно будет использовать какой-то идентификатор, кроме сеанса, для хранения посещения страницы. Скажем, у меня есть 5 экземпляров открытой страницы, поэтому вы хотите регистрировать их по отдельности. Итак, что-то вроде этого:
- Доступ к странице, создание кода (например, страница:
index.php
code: 2345
)
- Храните это в таблице базы данных со своим IP-адресом и посещайте время
- Разблокировать пожар событий, вызвать AJAX, передать страницу и код
- Посмотрите в БД для IP, страницы и кода и запишите время отпуска
Если они снова посещают index.php
, вы создадите другой код, скажем, 36789
. Использовать то, что генерирует случайный GUID, лучше всего, поэтому вы можете (по существу) игнорировать любые возможности коллизий в одной и той же комбинации IP/страницы/кода.
Ответ 3
На самом деле нет эффективного способа сделать это с PHP, поскольку PHP является серверной и не дает возможности определить, когда страница была закрыта. Для этого вам нужно использовать javascript.
Что бы я сделал, это использовать javascript для запуска таймера на window.onload
, а затем завершить таймер на window.onunload
. Затем вы можете хранить данные и делать с ними то, что хотите.
Ответ 4
$(window).unload - очень хорошая функция для отслеживания страницы, покидающей пользователя.
но один момент - это когда выгружать окно для отправки ajax, когда-то он теперь работает, ajax не завершается, когда пользователь покидает страницу. поэтому вам нужно добавить один атрибут (async: false) в ajax, код - удар:
$.ajax({
type: 'POST',
async: false,
url: '/collect-user-time/ajax-backend.php',
data: {time: time}
});