Вопрос

Я хотел бы измерить, сколько времени пользователь проводит на моем сайте. Это необходимо для сайта сообщества, где вы можете сказать: «Пользователь X тратил здесь 1397 минут».

Прочитав некоторые документы об этом, я знаю, что нет идеального способа достичь этого. Вы не можете измерить точное время. Но я ищу подход, который дает хорошее приближение.

Как ты мог это сделать? Мои идеи: 1) Добавление 30 секунд к онлайн -счетчику времени на каждом представлении страницы. 2) На каждом представлении страницы сохраните текущую временную метку. В следующем представлении добавьте разницу между сохраненной меткой времен и текущей меткой времени в онлайн -счетчик времени.

Я использую PHP и MySQL, если это имеет значение.

Я надеюсь, что вы можете мне помочь. Заранее спасибо!

Это было полезно?

Решение

Против вас работают два фактора -

  1. Вы можете собирать только статистику с той же времени (просмотры страниц), и нет никакого разумного способа обнаружить то, что произошло между этими пунктами;

  2. Даже тогда вы будете подсчитывать время окна браузера, а не время пользователя; Пользователи могут легко иметь несколько вкладок, открытых на нескольких экземплярах браузера одновременно.

Я подозреваю, что ваше лучшее приближение - приписывать некоторое среднее время внимания за клик, а затем умножение. Но тогда вы можете измерить клики.

Другие советы

Это, вероятно, бессмысленно .... что, если у пользователя открывается три вкладка и «посещает» ваш сайт, на самом деле работая на двух других вкладках? Вы хотите это считать?

Почему бы просто не измерить то, что на самом деле может быть измерено?: Рефералы, просмотры страниц, пробелы и т. Д.

Сбор и реклама таких чисел полностью соответствует остальному миру веб -метрик.

Кроме того - если кто -то должен был развлечь веб -страницу, а затем, скажем, отправиться на двухнедельный отпуск, как лучше всего учитывать?

Вы могли бы проверить, если пользователь Активно на странице а затем отправляйте запрос AJAX на ваш сервер каждые X секунды (будет ли в порядке 60 секунды?), Что пользователь активен или нет на странице.

Затем вы можете использовать второй метод, который вы упомянули, чтобы вычислить разницу во времени между двумя «активными» временными метками, которые не разделены более чем одним или двумя интервалами. Добавление их дало бы время, проведенное пользователем на вашем сайте.

Google Analytics включает в себя очень мощную Регистрация/отслеживание событий Механизм, который вы можете настроить и использовать, получить действительно хорошие измерения поведения пользователей - я бы посмотрел на это

Очень простое решение состоит в том, чтобы использовать скрытый iframe, который периодически загружает веб -страницу PHP. Загруженная веб -страница регистрирует время начала (если ее не существует) и время остановки. Когда человек покидает страницу, у вас осталось время, когда человек впервые пришел на сайт, и в последний раз, когда он был там. В этом случае метка времени обновляется каждые 3 секунды.

Я использую файлы для хранения информации о журнале. Имя файла, которое я использую, состоит из месячного года iPaddress.htm

Пример iframe PHP -код. Поместите это в yourwebsite/youranalyticsiframecode.php:

<?php
  // get the IP address of the sender
  $clientIpAddress=$_SERVER['REMOTE_ADDR'];
  $folder = "yourAnalyticsDataFolder";
  // Combine the IP address with the current date.
  $clientFileRecord=$folder."/".date('d-M-Y')."  ".$clientIpAddress;

  $startTimeDate = "";

  // check to see if the folder to store analytics exists
  if (!file_exists($folder))
  {
    if (!mkdir($folder))
      return;  // error - just bail

  }


  if (file_exists($clientFileRecord) )
  {
    //read the contents of the clientFileRedord
    $lines = file($clientFileRecord);

    $count = 0;

    // Loop through our array, show HTML source as HTML source; and line numbers too.
    foreach ($lines as $line_num => $line)
    {
      echo($line);
      if ($count == 0)
        $startTimeDate = rtrim( $line );
      $count++;

    }
  }

  if ($startTimeDate == "")
    $startTimeDate = date('H:i:s d-M-Y');

  $endTimeDate = date('H:i:s d-M-Y');

  // write the start and stop times back out to the file
  $file = fopen($clientFileRecord,"w");
  fwrite($file,$startTimeDate."\n".$endTimeDate);
  fclose($file);


?>

JavaScript периодически перезагрузить iframe на главной веб -странице.:

<!-- Javascript to reload the analytics code -->
<script>
  window.setInterval("reloadIFrame();", 3000);

  function reloadIFrame() {
    document.getElementById('AnalyticsID').src = document.getElementById('AnalyticsID').src
      //          document.frames["AnalyticsID"].location.reload();
  }
</script>

Iframe на главной веб -странице выглядит следующим образом:

<iframe id="AnalyticsID" name="AnalyticsID" src="http://yourwebsite/yourAnalyticsiFrameCode.php" width="1"
height="1" frameborder="0" style="visibility:hidden;display:none">
</iframe>

Очень простой способ отобразить файлы марки времени:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
  <title></title>
</head>

<body>
Analytics results
<br>
<?php
  $folder = "yourAnalyticsDataFolder";
  $files1 = scandir($folder);
  // Loop through the files
  foreach ($files1 as $fn)
  {
    echo ($fn."<br>\n");
    $lines = file($folder."/".$fn);
    foreach ($lines as $line_num => $line)
    {
      echo("  ".$line."<br>\n");
    }
    echo ("<br>\n <br>");

  }

?>
</body>

</html>

Вы получаете страницу результатов, как это:

22-Mar-2015 104.37.100.30

18:09:03 22-марта 2015 года

19:18:53 22-марта 2015 года


22-Mar-2015 142.162.20.133

18:10:06 22-марта 2015 года

18:10:21 22-марта 2015 года

Я думаю, что клиентская Analytics Analytics является решением для этого.

У вас есть Google Anality, Пивик, и есть также рекламные инструменты в JS, которые делают именно это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top