Advertisement
Guest User

Untitled

a guest
Jul 1st, 2015
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.25 KB | None | 0 0
  1. Модуль статистики занимается генерацией и отображением сводных подневных и помесячных статистик для вебмастеров и администраторов. Сгенирированные статистики лежат в таблицах mysql.
  2. Типичная структура таблицы. Рассмотрим на примере подневной статистики по странам для вебмастеров. Для каждого вебмастера, каждой страны и каждой даты будут храниться суммарные значения заработка, просмотров, скачиваний, прослушиваний.
  3. - id (просто primary key, больше никак не используется).
  4. - поля, по которым группируются данные: user_id, countrycode, date. Они входят в уникальный ключ.
  5. - поля, хранящий суммарные значения (дальше называются - агрегатные: money, downloads, listens, views.
  6. Таблицы именуются по такому принципу (хотя это настраивается): stats_countries_day.
  7. Обычно для каждой подневной таблицы существует аналогичная помесячная, у которой всё так же, только вместо поля date поле month.
  8.  
  9. Модуль статистики состоит из таких частей:
  10.  
  11. 1. Описание таблиц. namespace Table. В нём по классу на каждую таблицу. Классы для подневных таблиц определяют имя таблицы; поля уникального ключа; поля, содержащие суммируемые данные. Классы для помесячных таблицы выглядят проще: расширяют соответствующую подневную и подключают trait.
  12. Бандл статистики не использует пропел, не определяет схему и не генерит пропел-классы. Для вставки таблиц во время разработки используется команда app/console stats:sql --execute. Эта команда анализирует все таблицы, описанные в namespace Table. Для продакшна должны быть сгенерированы миграции, их будем генерить по общему правилу - перед мержем ветки в основную. Миграцию нужно будет добавить вручную. Код SQL для вставки таблиц можно получить app/console stats:sql, поэтому генерация первой миграции будет лёгкой. При изменении структуры таблиц нужно будет вручную формировать SQL.
  13.  
  14. 2. Генераторы статистики (updaters) - namespace Updater. Наполняют таблицы со статистикой. Ими занимается пушер.
  15.  
  16. 3. Провайдеры статистики - namespace Provider. Каждый провайдер предоставляет доступ к одной статистике. Простые провайдеры просто предоставляют удобный доступ к одной таблице статистики, сложные могут джойнить, фильтровать, сортировать и т.д.. Провайдер предоставляет функции: посчитать количество записей по критерию, выдать записи по критерию (с разбивкой на страницы), сообщить поля, по которым можно сортировать, сообщить агрегатные поля, сообщить все поля.
  17.  
  18. 4. Контроллеры - namespace Controller. Каждый контроллер отвечает за одну страницу с одной статистикой. Поскольку все страницы статистики почти идентичны, общая часть описана в AbstractStatsController.
  19.  
  20. 5. Шаблоны. Поскольку все страницы почти идентичны, есть только один шаблон - stats.html.twig. Чтобы кастомизировать статистики, в шаблон передаётся Helper.
  21.  
  22. 6. Хелперы. По схеме MVC относятся ко view, хотя являются PHP-классами. Предоставляют шаблону stats.html.twig информацию: имя статистики (используется в частности как css-класс для основного дива статистики), заголовок страницы, список полей в таблице, заголовки для колонок таблицы, интро (если вернёт не null - выводится над таблицей). Также есть метод prepareValue, который используется для того, чтобы форматировать значения, которые выводятся в таблице (например, трафик, деньги и кол-во скачиваний нужно форматировать разным способом). prepareValue возвращает уже экранированные (escaped) значения (там может быть готовый html). заголовки и интро возвращаются в непереведённом виде, т.е. в виде языковых ключей. Пока достаточно единственного хелпера BaseViewHelper, который параметризируется именем статистики и списком полей, но в случае необходимости можно унаследовать и сделать для какой-то статистики отдельный хелпер.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement