Я ищу, чтобы отслеживать среднее время на веб-сайте (точно так же, как это делает аналитика Google) для внутреннего администрирования.Как отслеживать время пользователя на сайте
Что это самый простой способ сделать это?
Я ищу, чтобы отслеживать среднее время на веб-сайте (точно так же, как это делает аналитика Google) для внутреннего администрирования.Как отслеживать время пользователя на сайте
Что это самый простой способ сделать это?
Вы можете получить время следующих способов:
Если вам нужно, я могу написать пример сценария.
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>
И бэкенд сценарий:
<?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);
}
Но, как я сказал, что это wouldn `работает в браузере Опера
это 'window.onunload' – jordanstephens
да вы прав, я сделал ошибку, извините меня –
Удивительно, спасибо за помощь - Мне бы хотелось увидеть сценарий, если у вас есть время написать быстрый? Могу ли я использовать page.unload для всего домена? – Walker
Основной способ, которым я могу думать:
Когда пользователь первым попадает на страницу, лаг, скажем, их IP-адрес, страница загружена, и время. Затем, используя некоторые Javascript и AJAX, когда они покидают страницу, вы используете событие unload
для отправки обработчику AJAX, который записывает страницу и когда она уходит.
Чтобы сохранить посещение страницы, вам нужно будет использовать какой-либо идентификатор, кроме сеанса. Скажем, у меня есть 5 экземпляров открытой страницы, поэтому вы хотите регистрировать их по отдельности. Так, что-то вроде этого:
index.php
код: 2345
)Если они посещают index.php
снова, вы бы сгенерировали еще один код, скажем, 36789
. Использовать то, что генерирует случайный GUID, лучше всего, поэтому вы можете (по существу) игнорировать любые возможности коллизий в одной и той же комбинации IP/page/code.
И что вы будете делать, если в браузере Opera выгрузить событие doesn't? –
@ DimaKrasun Я не понимаю, что это будет проблемой. Думал, что это было поддержано во всех браузерах, но я вообще не касался Opera. Узнавайте что-то новое каждый день. – Tarka
Там на самом деле не является эффективным способом сделать это с помощью PHP, поскольку PHP является серверной и не дает возможности определить, когда страница была закрыта. Для этого вам нужно использовать javascript.
Что бы я сделал, это использовать javascript для запуска таймера на window.onload
, а затем завершить таймер на window.onunload
. Затем вы можете хранить данные и делать с ними то, что хотите.
$ (window) .unload - очень хорошая функция для отслеживания пользовательской страницы.
но один пункт, когда окно выгружает, чтобы отправить ajax, когда-то он теперь работает, ajax не закончен, когда пользователь покидает страницу. поэтому вам нужно добавить один атрибут (асинхронный: false) в ajax, код - удар:
$.ajax({
type: 'POST',
async: false,
url: '/collect-user-time/ajax-backend.php',
data: {time: time}
});
Не можете ли вы использовать данные Google Analytics? – ChrisF
Есть уже десяток пакетов, которые это делают. Не изобретайте велосипед, если вам это не нужно. Посмотрите на webalizer, awstats, urchin и т. Д. Это фактически нетривиальная проблема. Определение времени на сайте требует принятия некоторых предположений, поскольку вы знаете только, когда браузер запрашивает контент, а не когда пользователь закрывает окно, переходит на удаленный сайт и т. Д. –
Мы предлагаем правление, которое позволяет администраторам вступать и управлять конкретными сегментами пользовательской базы, и мы хотим предоставить им административную аналитику. – Walker