Я ищу, чтобы отслеживать среднее время пользователей на веб-сайте (так же, как это делает аналитика Google) для внутреннего администрирования.
Какой самый простой способ сделать это?
Я ищу, чтобы отслеживать среднее время пользователей на веб-сайте (так же, как это делает аналитика Google) для внутреннего администрирования.
Какой самый простой способ сделать это?
Вы можете найти время следующими способами:
Если вам нужно, я могу написать пример 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
Главным образом, о котором я могу думать:
Когда пользователь сначала нажимает на страницу, вы регистрируете, скажем, свой IP-адрес, загруженную страницу и время. Затем, используя некоторые Javascript и AJAX, когда они покидают страницу, вы используете событие unload
для отправки обработчику AJAX, который записывает страницу и когда они уходят.
Вам нужно будет использовать какой-то идентификатор, кроме сеанса, для хранения посещения страницы. Скажем, у меня есть 5 экземпляров открытой страницы, поэтому вы хотите регистрировать их по отдельности. Итак, что-то вроде этого:
index.php
code: 2345
)Если они снова посещают index.php
, вы создадите другой код, скажем, 36789
. Использовать то, что генерирует случайный GUID, лучше всего, поэтому вы можете (по существу) игнорировать любые возможности коллизий в одной и той же комбинации IP/страницы/кода.
На самом деле нет эффективного способа сделать это с PHP, поскольку PHP является серверной и не дает возможности определить, когда страница была закрыта. Для этого вам нужно использовать javascript.
Что бы я сделал, это использовать javascript для запуска таймера на window.onload
, а затем завершить таймер на window.onunload
. Затем вы можете хранить данные и делать с ними то, что хотите.
$(window).unload - очень хорошая функция для отслеживания страницы, покидающей пользователя.
но один момент - это когда выгружать окно для отправки ajax, когда-то он теперь работает, ajax не завершается, когда пользователь покидает страницу. поэтому вам нужно добавить один атрибут (async: false) в ajax, код - удар:
$.ajax({
type: 'POST',
async: false,
url: '/collect-user-time/ajax-backend.php',
data: {time: time}
});