Модуль статистики посещений LightStat by Sander для DLE

Модуль статистики посещений LightStat by Sander

Модуль статистики посещений LightStat by Sander

Данный модуль сделан по мотивам модуля LightStat от Malcov. Суть та же, но реализация немного отличается, в частности упор сделан на оптимизацию.
Дизайн нагло скопировал, разве что стили свои прописал.
Модуль статистики посещений LightStat by Sander


На сайтах с небольшой посещаемостью в целом между модулями нет разницы. Плюс минус обрабатываются одинаково по времени (хотя может зависеть от настроек сервера). А вот при большой посещаемости разница уже будет вполне так заметна.
Добавил в коде файла несколько параметров для настройки:
$mod = [
	'update_time'  => 30,	//Интервал обновления блока на JS, раз в N секунд
	'update_limit' => 10,	//Максимальное количество обновлений

	'offline_time' => 5,	//Сколько минут бездействия считать пользователя оффлайном
	'cache_time'   => 5,	//Время кеширования, секунд. Поставить 0 чтобы не использовать кеш
];


Параметр update_limit нужен чтобы модуль не создавал нагрузку когда пользователь просто оставил вкладку открытой и ушел.

Установка:
Скачать архив и распаковать в корень сайта.
Lightstat By Sander.zip [2,91 Kb] (cкачиваний: 252)

Актуальную версию можно скачать на GitHub


В желаемом месте в шаблоне вставить:
{include file="engine/mods/lightstat.php"}

После первого запуска открыть файл engine/mods/lightstat.php и удалить или закомментировать строку №18.
Прочие настройки так же внутри файла.

Версия PHP: 5.4 и старше
Версия DLE: 10.4 и старше

Пример работы: color.sandev.pro

С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (34)
  1. foto
    Клиент 28 апреля 2018 19:09 #
    Есть ли какой-то смысл для модуля делать отдельную папку mods? Почему нельзя поместить его в modules?
    0
    1. foto
      Администратор 28 апреля 2018 19:23 #
      В папке modules расположены файлы движка.
      В папке mods я размещаю свои модули и подключаемые хаки.
      Должен быть порядок. Да и удобнее так. Обновил DLE, папку engine/mods закинул и все.

      К примеру на color.sandev.pro у меня 35 папок и 19 файлов в этой папке.
      Нужно что-то подправить, я не мучаю голову и не занимаюсь поисками файлов в:
      engine/ajax/modName.php
      engine/modules/modName.php
      engine/modules/modName/file.php
      engine/data/modConfig.php
      engine/classes/mod.class.php
      engine/inc/modName.php

      Другое дело - сразу зашел в engine/mods/modName и все внутри.
      +2
      1. foto
        Клиент 30 апреля 2018 12:05 #
        Согласен, это удобно. Я не знал, что Вы свои модули в отдельной папке храните. У меня установлен Чат от Вас и он в папке modules. Вот я и удивился, зачем отдельную папку создавать для 1 файла. Теперь понятно.
        0
  2. foto
    Клиент 30 апреля 2018 17:50 #
    Так разве должно быть? Откуда зеленая полоска?
    0
    1. foto
      Администратор 1 мая 2018 10:38 #
      Зеленая полоска так и должна быть, разве что ее видно не должно быть.

      Как только выложил модуль - я допустил ошибку с подсчетом баров. Но потом исправил. Попробуйте скачать модуль заново и заменить файл lightstat.php
      Если не поможет - в коде замените все ceil на floor
      0
  3. foto
    Клиент 2 июня 2018 11:38 #
    @ Sander подскажите пожалуйста, как сделать так что бы этот блок был виден только для админа сайта?
    Заранее благодарен за ответ!
    0
    1. foto
      Администратор 2 июня 2018 11:41 #
      Для сбора статистики файл должен быть подключен и виден для всех, т.е. не использовать теги [group=1]...[/group]

      Чтобы блок был виден только админу, нужно в php файле перед строкой
      $total_count = array_sum($stats);

      Вставить:
      if ($member_id['user_group'] != 1) {
          return false;
      }
      0
  4. foto
    Клиент 2 июня 2018 11:58 #
    Цитата: Sander
    Для сбора статистики файл должен быть подключен и виден для всех, т.е. не использовать теги [group=1]...[/group]

    Чтобы блок был виден только админу, нужно в php файле перед строкой


    Извиняюсь не совсем правильно сформулировал вопрос, нужно сделать так что бы админу был виден весь блок а посетителям только общий онлайн ("посетители сейчас на сайте")
    0
    1. foto
      Администратор 2 июня 2018 12:13 #
      Для этого нужно вставить нижеуказанные строки как на скриншоте.
      <?php if ($member_id['user_group'] == 1): ?>
      
      <?php endif; ?>
      +1
  5. foto
    Клиент 2 июня 2018 12:32 #
    Цитата: Sander
    Для этого нужно вставить нижеуказанные строки как на скриншоте.
    <?php if ($member_id['user_group'] == 1): ?>
    
    <?php endif; ?>

    Большое вам спасибо!
    0
  6. foto
    Гость 22 июня 2018 17:24 #
    Уважаемый, а есть реализация но с никнеймами пользователей, которые в данный момент на сайте? Сколько не находил модулей, все не работают, то ли у них кодировка слетела, то мусорные функции, как показ браузера, страны и тд.
    На основе данного "мода" есть мод с никнеймами?
    0
    1. foto
      Администратор 22 июня 2018 17:30 #
      Про другие модули не знаю.
      Сделать вывод пользователей онлайн можно, но нужно писать небольшой модуль ну или этот дополнить.
      Я не возьмусь.
      0
  7. foto
    Гость 28 июля 2018 20:12 #
    Как настроить на сутки?
    0
    1. foto
      Администратор 28 июля 2018 20:25 #
      'offline_time' => 5,	//Сколько минут бездействия считать пользователя оффлайном

      В сутках 1440 минут.
      0
  8. foto
    Гость 28 июля 2018 20:40 #
    Цитата: Sander
    'offline_time' => 5,	//Сколько минут бездействия считать пользователя оффлайном

    В сутках 1440 минут.
    Спасибо, просто меня другие параметры смутили, думал надо их тож править или нет.)))
    0
  9. foto
    Гость 22 ноября 2018 15:11 #
    НА 13 дле выдает ошибку
    Fatal error: Cannot redeclare isBot() (previously declared in engine/mods/lightstat.php:41) in /engine/modules/lightstat.php on line 39
    0
    1. foto
      Администратор 23 ноября 2018 10:09 #
      Одновременно используйте только один из модулей. Или engine/mods/lightstat.php или engine/modules/lightstat.php

      Или откройте мой модуль и замените (2шт) isBot на isBotMod
      0
  10. foto
    Гость 16 декабря 2018 10:56 #
    Подскажите пожалуйста как исправить эту ошибку!
    MySQL error in file: /engine/mods/lightstat.php at line 74
    Error Number: 1146
    0
    1. foto
      Администратор 16 декабря 2018 11:28 #
      Вы удалили строку создающую таблицу в БД до первого запуска модуля.
      Строка 16:
      $db->query("CREATE TABLE
      0
  11. foto
    Клиент 11 января 2019 04:33 #
    Цитата: Razilator
    Уважаемый, а есть реализация но с никнеймами пользователей, которые в данный момент на сайте? Сколько не находил модулей, все не работают, то ли у них кодировка слетела, то мусорные функции, как показ браузера, страны и тд.
    На основе данного "мода" есть мод с никнеймами?

    Поддерживаю вопрос и саму идею.
    Олег Сандерович сделайте пожалуйста с выводом юзеров, и можно сразу в магазинчик выставить, я первый кто куплю такой мод.
    такой модуль уже давно никто не делал для новых версий, последние писались еще для 9 серии дле.
    0
  12. foto
    VIP 11 февраля 2019 07:34 #
    Хочу Модуль статистики «LightStat» 3.0 для DLE by Sander =) https://www.pandoge.com/moduli_i_skripty/modul-statistiki-lightstat-30-dlya-dle
    Пусть даже платный будет.
    +1
    1. foto
      Администратор 13 февраля 2019 11:11 #
      Я делал этот модуль импульсивно, по настроению.
      Заниматься им далее пока нет желания, даже платно.
      Да и будет это каким-то совсем уж беспардонным воровством идеи :(
      0
      1. foto
        VIP 13 февраля 2019 16:26 #
        Если идея не запатентованна, то она никому не принадлежит.
        Если народ просит и готов покупать, то почему нет. Вон выше пару человек тоже готовы купить.
        Дело в том что его версия 3.0 у меня с подключённым cloudflare работает не точно, не верно определяет зареганных и гостей. А ваша норм работает.
        0
        1. foto
          Гость 16 февраля 2019 18:26 #
          Если идея не запатентованна, то она никому не принадлежит.


          Сразу вспоминаются времена uCoz сайтов (5 - 10 лет назад), когда тырили все, что можно и у всех. neutral_face

          А по теме - в модуль уже давно добавлена поддержка cloudflare.
          0
          1. foto
            Посетитель 17 февраля 2019 16:07 #
            Это интересно чем же она обусловлена?
            Кривыми руками "хомячков" которые берут VPS и строят из себя невъе....ых админов, а потом жалуются целсофтке что у них сайт не правильно IP пользователей показывает?
            0
  13. foto
    VIP 12 февраля 2019 14:44 #
    'cache_time'   => 5,	//Время кеширования, секунд.

    Можно подробнее, как это понять?
    Кэш действует всего 5 секунд? А что потом?
    0
    1. foto
      Администратор 13 февраля 2019 11:14 #
      Можно подробнее, как это понять?

      Допустим ситуацию, что на сайте в одно время находится 100 посетителей.
      В итоге мы в сумме имеем регулярно 100 запросов. Кеш позволяет исключить массовое выполнение однотипного запроса. Если посещалка 100-500 уников в сутки, то от кеша тут действительно толку мало будет.

      Кэш действует всего 5 секунд? А что потом?

      Выполняется запрос в БД, блок обновляется и вновь кешируется. Стандартный алгоритм работы кеша...
      0
      1. foto
        VIP 13 февраля 2019 14:45 #
        Я всё же не понял, а почему по дефолту так мало секунд стоит? Всего 5.
        На 500 уников в сутки какое оптимальное значение поставить на данный параметр?
        0
        1. foto
          Администратор 13 февраля 2019 14:49 #
          Можно оставить 5, можно поставить 10, можно вовсе 0.
          На 500 уников особо погоды не сыграет.
          Оптимально 5-30 сек. Можно и больше, но тогда увеличивается погрешность.
          0
          1. foto
            VIP 13 февраля 2019 16:17 #
            Можно на примере одного человека принцип работы рассмотреть?
            Зашел чел на сайт. Его ip записалось в бд и закешировалось. Через 5 сек кэш сбрасывается. Ещё через 25 сек происходит обновление и снова заносится в бд и кэшируется. Через 5 сек сбрасывается, через 25 сек всё по новой. И так по кругу. Так чтоли это работает?
            0
  14. foto
    Посетитель 21 января 2020 23:04 #
    кто знает подскажите пожалуйста !!!! от него грабель не пашит
    Как удалить запрос ? с базы данных ?
    CREATE TABLE `название вашей базы данных`.`dle_lightstat` (`ip` VARCHAR(32) NOT NULL, `time` INT NOT NULL, `type` INT(1) NOT NULL, UNIQUE (`ip`)) ENGINE = MyISAM;
    0
    1. foto
      VIP 22 января 2020 09:08 #
      Если нужно удалить таблицу, попробуй это сделать через phpmyadmin.
      0
  15. foto
    Посетитель 14 августа 2020 19:18 #
    Кто ставил, иногда не определяет ip($_SERVER['REMOTE_ADDR']), мое решения:
    добавить в начало
    
    function getIp() {
      $keys = [
        'HTTP_CLIENT_IP',
        'HTTP_X_FORWARDED_FOR',
        'REMOTE_ADDR'
      ];
      foreach ($keys as $key) {
        if (!empty($_SERVER[$key])) {
          $ip = trim(end(explode(',', $_SERVER[$key])));
          if (filter_var($ip, FILTER_VALIDATE_IP)) {
            return $ip;
          }
        }
      }
    }

    Строка примерно 68
    $user_id = md5($_SERVER['REMOTE_ADDR']);

    заменить на
    $user_id = md5(getIp());
    0
  16. foto
    Гость 23 декабря 2022 14:45 #
    А если вставить в userinfo.tpl он нормально будет работать?
    0
Добавить комментарий

Внимание! Все сообщения касающиеся техподдержки будут удалены или проигнорированы

Attention! All messages asking for technical support will be removed or ignored

  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2024.
При копировании, ссылка на источник обязательна.