阅读本指南,如果
本指南假设您:
Matomo是一个主要做两件事的应用程序:
为了实现这一结果,Matomo的几个部分发挥了作用:
Matomo的代码库由:
插件不仅仅针对想要定制Matomo的第三方开发人员:Matomo的大部分都是通过插件实现的。Matomo Core设计得越小越好。
因此,有两种类型的插件:
插件/
文件夹)或透过Matomo的市场在web界面中以下是组成Matomo代码库的主要文件和文件夹:
配置/核心/ lang / # # Matomo核心类翻译插件/ #插件类以及它们的资产测试/供应商/ #库由作曲家node_modules安装/ # UI库由npm控制台安装CLI接口index . php # #入口点的web应用程序的入口点和HTTP报告HTTP API matomo.php #入口点跟踪HTTP API piwik.php #入口点跟踪API——向后兼容性piwik.js # JavaScript追踪中js/ #包括未简化的js跟踪器和PHP文件,允许用户使用js跟踪代码,而不需要在名称中包含matomo或piwik。
Matomo使用作曲家将其依赖项(PHP库)安装到供应商/
目录和npm来安装节点JavaScript库到node_modules
目录中。来自node_modules
目录被提交到Git存储库中,所以用户不需要运行任何npm命令来保持包的更新,这样我们就可以保证他们使用正确的版本。
Matomo通过检查是否已安装配置/ config.ini.php
文件存在。在安装过程中,这个文件将被创建,Matomo通过一个命令知道安装是否正在进行(一般)installation_in_progress = 1
在配置文件中设置。
Matomo有很多配置改变默认行为。该配置将由Matomo管理员编辑。
插件开发人员也可以使用依赖注入来改变Matomo的工作方式。
web应用程序的入口点是index . php
在根上。该文件初始化所有内容并调用FrontController
类。
Matomo的用户界面建立在HTML和JavaScript之上。而有些页面是PHP控制器提供的HTML文档(使用树枝模板引擎), Matomo UI的某些部分是用AngularJS构建的(目前正在迁移到Vue.js)。
AngularJS和Vue.js是前端JavaScript框架。这意味着用户界面是在客户端构建的,数据从HTTP Reporting API(下一节将描述)作为JSON获取。这也意味着更好的用户体验,因为它可以让Matomo开发人员构建更加动态和响应式的应用程序。
Matomo的长期路线图的一部分是将Matomo的UI越来越多的部分转移到Vue.js。
要准确理解Matomo如何处理和处理前端资产,如JavaScript和LESS,请阅读“asset-pipeline”指南”.
前端控制器将传入的HTTP请求路由到插件控制器根据URL参数:
/ index . php ?模块= CoreHome&action =指数……
在本例中,前端控制器将调用动作指数
的控制器上CoreHome
插件。在文件中插件/ CoreHome / Controller.php
的index ()
方法将被调用。
插件控制器返回一个字符串(通常是HTML内容)在HTTP响应中发送。
如果找不到指定的控制器动作,Matomo将检查是否有匹配的小部件或报告具有此名称。
如果找到一个,它将调用呈现()
小部件的方法或报表的方法。这是在CoreHome.renderWidget
而且CoreHome.renderReportWidget
控件中找到匹配的小部件或报告ControllerResolver.
的HTTP报表API工作原理类似于web应用程序。它的角色是服务报告机器可读的格式(XML, JSON,…)。它还提供关于各种实体的信息,如网站、用户、目标等等。
它有相同的入口点,也由前端控制器分派。
模块/ index . php ? = api方法= SEO.getRank&……
这个HTTP请求将像其他调用控制器一样被处理:插件名是API
也没有行动
给出了,又会落回哪一个指数
.
的Piwik \ API插件\ \控制器
类将被调用,它将把调用分派给目标API,充当API调用的第二个前端控制器。在我们的例子中,方法SEO.getRank
意味着Piwik \插件\ SEO \ API: getRank ()
方法将被调用。
API请求的身份验证使用token_auth
URL参数,通常不会加载会话,除非force_api_session = 1
参数存在。了解更多Matomo中的身份验证.
这HTTP跟踪API让JavaScript跟踪器提交分析数据被保存在Matomo(以前的Piwik)。
它的入口点不同于Matomo的web应用程序和HTTP报告API:它是通过matomo.php
文件。一些较老的Matomo装置可能仍在使用piwik.php
.
还有各种其他的跟踪客户.
在跟踪期间,不是所有的插件都被加载。出于性能考虑,只有在跟踪过程中被识别为需要的插件才会被加载。
任何跟踪的数据都存储在log_ *
表。这些表存储所有原始数据,然后将这些数据聚合到报告归档中,见下文。对于访问者的每次新访问和每次操作,在各自的日志表中创建一个新行。一些日志表如log_visit
也会在跟踪请求期间更新。
类提供了一个命令行API。/控制台
脚本。此脚本使用Symfony控制台组件.
插件可以公开CLI命令,可以像这样调用:
。/控制台visitorgenerator: generate-visits
命令类位于插件/ * /命令
并由Matomo自动检测。
Matomo允许您收集分析数据,然后作为报告检索。让我们看看在这之间发生了什么,以及Matomo如何建模、处理和存储数据。
HTTP跟踪API(即Piwik \追踪
组件)接收生分析数据,我们称之为日志数据”。
日志数据在PHP中表示为Piwik \追踪\访问
对象,并存储到以下表中:
log_visit
每次访问(回访访客)包含一个条目log_action
包含网站上所有可能的操作类型(例如,唯一的url,页面标题,下载url…)log_link_visit_action
每个访问者的操作包含一个条目(页面视图,…)log_conversion
包含访问期间发生的转换(与目标匹配的操作)log_conversion_item
包含电子商务转换项目这些表是为快速插入而设计和优化的,因为跟踪API需要尽可能快,以便处理流量大的网站。
这些表(及其相关PHP实体)的内容将在“Matomo数据库模式”指南.
上面的日志表并不是为提取高级报告而设计或优化的:当有大量数据时,将日志条目聚合到日、周或月可能会变得过于密集。
的归档的过程将读取日志数据(也称为原始数据)并聚合此数据以生成“归档数据(也称为报告)。这是针对某一天的报告所做的。计算特定一天的访问次数的示例查询如下所示Select count(*) as nb_visited from log_visit where idsite = 1 and visit_last_action_time >= '2021-08-04 00:00:00' and visit_last_action_time < '2021-08-05 00:00:00'
.
所有其他期间(周
,月
,一年
,和自定义日期范围
),由各子期间的报告数据汇总而成。这意味着对于这些时间段,我们不查询日志数据,而是通过聚合一周内每天的报告来生成一周的报告数据。为了汇总一个月的数据,它将汇总该月内不同周和天的报告。为了汇总该年的数据,它将汇总该年内每个月的报告数据。我们没有从这些时期的日志数据中生成这些报告,因为生成如此长时间的报告将花费太长时间。唯一的例外是一些指标,比如独立访客和独立用户可能由这些时期的原始数据产生.
归档数据可以是:
数字度量记录:简单的数值(如页面浏览量或访问量)
存储在archive_numeric_ *
表。值存储为float。
表记录:二维数据(可以是数值,也可以是其他任何数据),表示为数据表
对象
存储在archive_blob_ *
表。数据表
对象被序列化为字符串并压缩以存储为团
在表格中。
存储在数据库中的数字和表记录对象都被命名记录来区分它们数据表
由我们命名的Matomo API操作和返回的对象报告.
每个数值度量或表记录都在每个聚合级别上处理和存储:日、周和月。例如,这意味着“Entry pages”报表将针对每月的每一天以及每周、每月、每年和自定义日期范围进行处理和存储。这些数据是冗余的,但在请求特定时间段时,这对于保证快速性能是必不可少的。
由于归档数据必须快速查询,因此每月将其划分在单独的表中。然后我们会有:
archive_numeric_2021_10
: 2021年10月的指标archive_blob_2021_10
: 2021年10月的报告archive_numeric_2021_11
: 2021年11月的指标archive_blob_2021_11
: 2021年11月的报告文档中详细解释了存档表的内容“Matomo数据库模式”指南.文档中详细解释了存档过程“存档”指南.
默认情况下,每当在浏览器中或通过API请求这些报告时,Matomo都会“按需”生成这些报告。这可能会降低Matomo的速度,因此可以进行配置自动存档(有时也称为预归档),它将通过cron在后台定期生成这些报告。
要了解更多关于存档的知识,请阅读我们的归档流程指南和我们的存档行为规范.
如上所示,数据存储为数值指标或表记录。
报告是数据表
对象提供的由插件定义的API类.API类访问持久指标或记录,并将它们转换为可呈现的报告。
有时,不同的API报告可以使用一个持久存档记录。
中,可以阅读有关如何创建和提供报告的详细信息“报告”指南.
Matomo Core只定义了主要流程和行为。插件可以通过几个插件扩展和定制它们扩展点:
有关此主题的更多信息,请参阅“Matomo的扩展点”指南.
作为开发人员或系统管理员,您可能还想了解: