项目作者: KarelWintersky

项目描述 :
Dr. Calculus statistics engine
高级语言: PHP
项目地址: git://github.com/KarelWintersky/DrCalculus.git
创建时间: 2020-04-09T11:47:08Z
项目社区:https://github.com/KarelWintersky/DrCalculus

开源协议:MIT License

下载


Создаем таблицу для статистики

  1. -- создание таблицы
  2. CREATE TABLE `stat_nviews` (
  3. `item_id` int(11) DEFAULT NULL,
  4. `item_type` enum('article','report','page') NOT NULL,
  5. `event_count` int(11) DEFAULT NULL,
  6. `event_date` date DEFAULT NULL,
  7. UNIQUE KEY `id_type_eventdate` (`item_id`,`item_type`,`event_date`) USING BTREE
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Инициализируем

  1. use \Arris\DrCalculus\DrCalculus;
  2. $pdo_connection = DB::C(); // or other PDO connector
  3. DrCalculus::init($pdo_connection, ['article','report','page'] );

Записываем статистику:

  1. DrCalculus::updateVisitCount($article['id'], 'article');

Сигнатуры методов

  1. /**
  2. * Инициализирует движок DrCalculus
  3. *
  4. * @param PDO $pdo_connection -- PDO connection
  5. * @param array $allowed_item_types -- словарь-список допустимых значений для поля item_type
  6. * @param string $stat_table -- таблица для хранения статистики (stat_nviews по умолчанию)
  7. * @param bool $is_engine_disabled -- разрешено ли DrCalculus заполнять статистику. Рекомендуется передавать сюда что-то вроде `getenv('DEBUG.DISABLE_DRCALCULUS_STATS_ENGINE')` )
  8. *
  9. */
  10. public static function init(PDO $pdo_connection, array $allowed_item_types = [], $is_engine_disabled = false, $stat_table = 'stat_nviews')
  1. /**
  2. * Обновляет таблицу статистики.
  3. *
  4. * @param $item_id - id сущности
  5. * @param $item_type - тип сущности (значение из словаря, заданного при инициализации)
  6. *
  7. * @return array - [ 'state' => статус, 'lid' => id вставленного/обновленного элемента ]
  8. *@throws Exception
  9. */
  10. public static function updateVisitCount($item_id, $item_type)
  1. /**
  2. * Удаляет статистические записи из таблицы по ITEM_ID + ITEM_TYPE
  3. *
  4. * @param $item_id
  5. * @param $item_type
  6. * @return array
  7. */
  8. public static function removeVisitData($item_id, $item_type)
  1. /**
  2. * Возвращает записи в статистике по элементу указанного типа за последние N дней
  3. *
  4. * @param int $id
  5. * @param string $type
  6. * @param null $last_days_interval
  7. * @return array
  8. */
  9. public static function getItemViewCount(int $id, string $type, $last_days_interval = null)
  1. /**
  2. * Возвращает количество посещений для указанного элемента указанного типа сегодня (это важно, TODAY, а не за последние сутки)
  3. *
  4. * @param $item_id
  5. * @param $item_type
  6. * @return mixed
  7. */
  8. public static function getVisitCountToday($item_id, $item_type)
  1. /**
  2. * Возвращает количество посещений для указанного элемента указанного типа всего
  3. *
  4. * @param $item_id
  5. * @param $item_type
  6. * @return mixed
  7. */
  8. public static function getVisitCountTotal($item_id, $item_type)
  1. /**
  2. * Функция-хелпер: посещений сущности суммарно: всего и сегодня
  3. *
  4. * @param $item_id
  5. * @param $item_type
  6. * @return array array ['total', 'today']
  7. * @throws Exception
  8. */
  9. public static function getVisitCountTodaySummary($item_id, $item_type)