请阅读此文,如果:
- 你想快速了解matomo是如何工作的
- 你想为matomo做出点贡献或者想了解它的架构
本文假定你已经对web技术有一定的了解,比如web应用、服务器、HTTP协议、PHP等等
介绍
Matomo主要做一下两件事情:
- 收集并存储分析数据
- 对已经存储的数据出具报表
为了实现上述目的,Matomo由以下几个部分共同参与完成:
- JavaScript追踪器由Matomo提供,可被包含到网页中
- 追踪器可以收集所在网页的数据,然后通过HTTP追踪接口发送给Matomo
- 归档任务运行并预处理数据(实时动态地或通过cron任务)
- 数据通过报表的形式进行展现,它们可以通过WEB接口或者HTTP报表接口来访问
欢迎加入Matomo中文网官方QQ群255820112(点击滚动至本页末可扫描二维码),随时提问,有问必答。
插件体系
Piwik的代码库有以下两部分组成:
- Matomo内核:它提供应用的基础架构和扩展点。
- 插件:它使用内核提供的扩展点来增加新的行为和内容到应用。
插件不仅是为第三方开发者定制开发设计;大部分的matomo功能也是基于插件形式开发的。Matomo内核被设计的尽量小。
这样,就存在两种插件:
- 默认插件:提供Matomo的基本特性,它们随版本一起发布。
- 可选插件:可以被手工安装(复制插件到plugin目录)或在页面中通过Piwik市场进行安装
代码库
下面是Matomo的代码库的主要文件和目录:
config/ #配置文件目录
core/ # Matomo内核类
lang/ # 多语种文件
plugins/ # 插件类及相关的静态文件
tests/
vendor/ # 利用Composer安装的类库
console # 命令行执行文件
index.php # WEB应用和HTTP接口的入口
piwik.php # HTTP追踪API的入口
piwik.js # 集成到网站的javascript
接口
Web应用
WEB应用的入口是根目录下的index.php。这个文件初始化所有事情并调用FrontController类。
前台控制器会基于URL参数将HTTP请求路由到特定插件的控制器。
/index.php?module=CoreHome&action=index&…
在这个例子中,前台控制前会调用CoreHome插件控制器中的index活动方法。
插件控制器会返回一个视图(通常是HTML内容)作为HTTP响应。
用户界面
Piwik的用户界面是基于HTML和JavaScript的。一些页面是由PHP控制器产生的HTML文档(使用Twig模板引擎生成),另外一些Matomo用户界面是基于AngularJS。
AngularJS是前端JavaScript框架,这就意味着用户界面是在客户端浏览器构建的,其中的数据是通过HTTP报表接口(下一章会介绍)获取的,格式为JSON。这也就意味着更好的用户体验,因为Matomo开发者构建了更加动态和更具互动性的应用。
Matomo长远路标的一部分就是将越来越多的Matomo用户界面转移到AngularJS。
HTTP报表接口
HTTP报表接口工作方式上类似于WEB应用。它的角色就是以一种机器可读的格式(XML,JSON,…)服务于报表。
它具有完全相同的入口,并且也是通过前台控制器进行分发。
/index.php?module=API&method=SEO.getRank&…
上面的网址表示插件名称是API,action没被指明则默认指向index。
接下来Piwik\Plugin\API\Controller类会被调用,然后它会将调用分发到目标API,就如同API调用的第二层前端控制器一样。在上述例子中,SEO.getRank代表Piwik\Plugin\SEO\API::getRank()会被调用。
HTTP追踪接口
HTTP接口使得JavaScript追踪器能够提交分析数据到Matomo,然后由Matomo进行保存。
它的入口有别于Matomo的Web应用和HTTP报表接口,它是通过piwik.php文件来完成。
了解更多关于HTTP追踪接口的内容。
命令行
Matomo通过./console提供命令行接口。它是基于Symfony控制台组件开发的。
插件可以开发命令并以以下方式调用
./console visitorgenerator:generate-visits
Command类位于 plugins/*/Commands并可以被Matomo自动监测到。
阅读更多关于Matomo命令行的内容
数据模型,数据处理和数据存储
Matomo让你可以收集数据,然后以报表的形式获取。让我们一起来看看其间Matomo是如何建模、处理和存储数据的。
日志数据:原始分析数据
HTTP追踪接口(如Piwik\Tracker组件)用来获取原始分析数据,我们称之为“日志数据”。
日志数据用Piwik\Tracker\Visit对象来表示,并被存储到下面几张表:
- log_visit:每次访问对应一条记录
- log_action:包含网站上各种类型的行为(如独立url,网页标题,下载网址)
- log_link_visit_action:访客的每个行为对应一条记录(网页浏览)
- log_conversion:包含访问过程中所有的转化(与目标匹配的行为)
- log_conversion_item:包含电子商务转化条目
这些表被设计和优化已达到最快的插入效率,因为追踪接口需要这样才能搞定大流量的网站。
关于这些表的内容(和它们对应的PHP实体)在“Matomo数据库结构”中有详细解释。
归档处理
以上数据库表无法快速获取具有高层次业务逻辑的数据:当数据量比较大的时候,将日志条目聚合到天、周、月会变得繁重。
归档处理会读取日志文件,并将其聚合成 “归档数据”。数据会被聚合并以以下方式存储:
- 天
- 周
- 月
- 年
- 自定义日期范围
归档数据可以是:
- 数值指标:它就是简单的数值(像网页访问数),它们被存储在archive_numeric_*表中,数据以float类型存储。
- 表记录:二维数据(可以是数值类型,也可以是其他任何类型),它用Piwik\DataTable对象来表示。它们被存储在archive_blob_*表中。对象是被序列化成了字符串,并被压缩存储在BLOB类型字段中。存储在数据库中的DataTable对象被称为records,用以区分DataTable。DataTable对象是通过Matomo接口操作和返回的,我们称之为reports。
所有数值指标或表记录都会以按天、按周、按月方式进行处理和存储。就拿入口页面报告来说,数据库中有每天的数据,每周的数据,每月的数据,每年的数据,甚至自定义日期范围对应的数据。这些数据看起来是冗余的,但它带来了读取效率的提高。
由于归档数据需要被快速请求,它们被分割到不同的月份了,所以在数据库中,你可以看到:
- archive_numeric_2014_10: 2014年10月的数值指标
- archive_blob_2014_10:2014年10月的报表
- archive_numeric_2014_11: 2014年11月的数值指标
- archive_blob_2014_11: 2014年11月的报表
归档表的内容在“Matomo数据库结构”中有详细介绍。归档过程在“Matomo归档原理”中有详细介绍。
从归档数据到报表
就像上面所展示的那样,数据会以数值指标或表记录的方式存储。报表(reports)是DataTable对象,它由插件中定义的API类生成。API类访问被持久化的数值指标和记录(records)并将其转化成可呈现的报表。
有时候,一个持久化的记录可以是多个API报告的数据源。
你可以在“Matomo报告”中阅读更多关于报告是如何被创建和服务的内容。
Piwik扩展点
Matomo内核只定义了主要的流程和行为。插件可以基于内核进行扩展和定义,有以下扩展点:
- 注册行为到事件(Events),或触发事件(Events)
- 实现特定类,Matomo可以自动识别它们
- 继承某些抽象基类
你可以在“Piwik扩展点”阅读更多关于此专题的内容。
I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.
Thanks for sharing. I read many of your blog posts, cool, your blog is very good.
Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?
sumatriptan uk pharmacy: ventolin uk pharmacy – cymbalta mail order pharmacy
viagra for sale in us: cheap generic india viagra – sildenafil price uk
cheap viagra pills online: VGR Sources – buy generic viagra in india
viagra 4 sale VGR Sources viagra pharmacy cost
viagra for women in india: viagra tablets pharmacy – 2 viagra pills
can i buy sildenafil over the counter in canada: cheapest sildenafil 50 mg – buy viagra in europe
online viagra best: where to buy real viagra – sildenafil over the counter india
https://vgrsources.com/# cheap generic viagra india
buy sildenafil 100mg online VGR Sources sildenafil pharmacy
generic viagra europe: where to buy cheap viagra in canada – generic viagra canada price
cheap real viagra: how do i get viagra online – can you order viagra from canada
generic drug for viagra VGR Sources canadian drugstore viagra
viagra pill cost canada: VGR Sources – sildenafil 25 mg mexico
https://vgrsources.com/# can i buy viagra over the counter
viagra china: buy viagra without a prescription – generic viagra online pharmacy uk
generic viagra pills online VGR Sources order viagra india
where to buy viagra over the counter uk: generic viagra india price – where to buy viagra cheap
viagra india price: sildenafil pills canada – buy viagra online cheap usa
where to get viagra in usa sildenafil tablets online australia viagra 25mg price in india
how to get a prescription for viagra: VGR Sources – sildenafil tablets 120mg
best price viagra canada: VGR Sources – viagra medicine in india
https://vgrsources.com/# buy viagra online mastercard
buying viagra in canada safely: VGR Sources – sildenafil no prescription free shipping
viagra singapore pharmacy VGR Sources sildenafil 5 mg
sildenafil 20 mg tablets price: VGR Sources – how do you get viagra
generic viagra price in india: VGR Sources – price of sildenafil 50 mg
best price for sildenafil: female viagra tablet in india online purchase – viagra online canada mastercard
viagra online europe VGR Sources canadian pharmacy viagra online
buy viagra soft: VGR Sources – viagra 100mg india price
https://vgrsources.com/# chewable sildenafil
viagra gel uk: VGR Sources – purchase viagra online canada
best sildenafil coupon VGR Sources canadian pharmacy generic viagra
how to get a prescription for viagra: sildenafil generic no prescription – sildenafil 100 mg tablet coupon
online pharmacy canada generic viagra: VGR Sources – canadian pharmacy viagra uk
sildenafil 20 mg coupon: VGR Sources – cheap viagra pills
viagra 25mg: VGR Sources – generic viagra buy online
400 mg sildenafil buy generic viagra soft tabs us online pharmacy viagra
where to viagra online: can i buy viagra without a prescription – how to get viagra in mexico
how to buy viagra in india: VGR Sources – sildenafil 90mg
https://vgrsources.com/# buy viagra 100 mg online
generic viagra 50mg price: best online pharmacy uk viagra – how to order viagra in india
sildenafil online pharmacy india: VGR Sources – where to order viagra online
buy viagra online canadian pharmacy: online canadian pharmacy viagra – generic sildenafil citrate
sildenafil prescription prices VGR Sources sildenafil nz pharmacy
viagra for sale uk: buy viagra 100 mg online – how to get viagra
viagra cost in canada: VGR Sources – buy generic viagra in us
https://vgrsources.com/# how to order sildenafil
sildenafil 20 mg tablets price: viagra cheapest – where can i order generic viagra
can i buy viagra over the counter in usa VGR Sources where can i order real viagra
how to get viagra tablets in india: VGR Sources – 100mg sildenafil coupon
can i order viagra online in canada: VGR Sources – sildenafil brand name in india
sildenafil 20 mg pharmacy VGR Sources canada viagra buy
viagra online uk paypal: VGR Sources – sildenafil 50mg for sale
viagra pill price in mexico: how to buy viagra online usa – sildenafil online prices
https://vgrsources.com/# can you order viagra online
best viagra tablets india: buy sildenafil 20 mg – can i buy sildenafil over the counter in uk
cheap viagra 100mg tablets VGR Sources purchase viagra tablets
where can i buy generic viagra: VGR Sources – order viagra online canada
CrestorPharm: CrestorPharm – paxlovid and rosuvastatin
prednisone 5443: where can i buy prednisone without prescription – PredniPharm
PredniPharm PredniPharm buy prednisone 1 mg mexico
Crestor Pharm: CrestorPharm – Crestor Pharm
http://lipipharm.com/# LipiPharm
CrestorPharm: Crestor Pharm – Order rosuvastatin online legally
PredniPharm where can i buy prednisone online without a prescription PredniPharm
Lipi Pharm: lipitor rash – LipiPharm
Rosuvastatin tablets without doctor approval: side effects of crestor 10 mg – CrestorPharm
Crestor Pharm: Crestor 10mg / 20mg / 40mg online – rosuvastatin nursing implications
PredniPharm prednisone sale Predni Pharm
http://semaglupharm.com/# FDA-approved Rybelsus alternative
Semaglu Pharm: semaglutide where to inject – SemagluPharm
Predni Pharm: PredniPharm – prednisone 20 mg tablets
PredniPharm cheap prednisone 20 mg prednisone brand name in india
prednisone 20 mg tablets coupon: Predni Pharm – PredniPharm
https://prednipharm.com/# prednisone 20 mg tablet price
Crestor Pharm rosuvastatin side effects erectile dysfunction Crestor Pharm
LipiPharm: LipiPharm – lipitor manufacturer
Crestor Pharm: does rosuvastatin make you tired – CrestorPharm
Where to buy Semaglutide legally Semaglu Pharm Safe delivery in the US
Crestor mail order USA: Order rosuvastatin online legally – Crestor mail order USA
canada pharmacy prednisone: PredniPharm – PredniPharm
Crestor Pharm: Online statin therapy without RX – CrestorPharm
PredniPharm PredniPharm prednisone 4 mg daily
https://semaglupharm.com/# Where to buy Semaglutide legally
Semaglu Pharm: SemagluPharm – No prescription diabetes meds online
prednisone online for sale PredniPharm Predni Pharm
does lipitor cause headaches: Lipi Pharm – LipiPharm
buy generic prednisone online: Predni Pharm – Predni Pharm
LipiPharm Generic Lipitor fast delivery Lipi Pharm
https://prednipharm.shop/# Predni Pharm
Crestor Pharm: Crestor Pharm – gif crestor
can you buy prednisone over the counter in mexico: prednisone in canada – Predni Pharm
CrestorPharm Crestor Pharm Crestor Pharm
п»їBuy Rybelsus online USA: Where to buy Semaglutide legally – SemagluPharm
LipiPharm: LipiPharm – side effects of missing a dose of lipitor
does rosuvastatin cause weight gain CrestorPharm Best price for Crestor online USA
Online statin drugs no doctor visit: Lipi Pharm – Lipi Pharm
https://semaglupharm.shop/# Semaglu Pharm
can crestor lower blood pressure: Crestor Pharm – Crestor Pharm
п»їBuy Crestor without prescription Order rosuvastatin online legally CrestorPharm
Semaglu Pharm: SemagluPharm – Affordable Rybelsus price
side effect of semaglutide: semaglutide b12 compound – Semaglu Pharm
SemagluPharm: SemagluPharm – tirzepatide vs semaglutide dosage chart
Lipi Pharm: lipitor tablets – FDA-approved generic statins online
https://semaglupharm.com/# Semaglu Pharm
CrestorPharm Best price for Crestor online USA Crestor Pharm
No RX Lipitor online: Cheap Lipitor 10mg / 20mg / 40mg – LipiPharm
https://semaglupharm.shop/# semaglutide & tirzepatide weight loss clinic
Rybelsus online pharmacy reviews: SemagluPharm – rybelsus benefits
No RX Lipitor online Lipi Pharm Lipi Pharm
http://crestorpharm.com/# Crestor 10mg / 20mg / 40mg online
Lipi Pharm: lipitor and grapefruit interaction – Lipi Pharm
https://semaglupharm.com/# generic rybelsus cost
Predni Pharm: 10 mg prednisone – prednisone 20mg for sale
Crestor 10mg / 20mg / 40mg online Affordable cholesterol-lowering pills Crestor Pharm
http://semaglupharm.com/# SemagluPharm
Lipi Pharm: Lipi Pharm – atorvastatin coupon
Safe online pharmacy for Crestor: Crestor Pharm – Crestor Pharm
https://semaglupharm.shop/# Semaglu Pharm
Predni Pharm PredniPharm Predni Pharm
https://crestorpharm.shop/# crestor 10 mg price
PredniPharm: prednisone 5mg over the counter – PredniPharm
Affordable cholesterol-lowering pills: crestor versus atorvastatin – No doctor visit required statins
https://semaglupharm.shop/# Online pharmacy Rybelsus
PredniPharm PredniPharm PredniPharm
Predni Pharm: Predni Pharm – PredniPharm
LipiPharm: when should you take atorvastatin – atorvastatin versus pravastatin
http://semaglupharm.com/# semaglutide before and after 3 months
CrestorPharm п»їBuy Crestor without prescription Crestor Pharm
prednisone 10 mg online: Predni Pharm – how much is prednisone 10mg
rybelsus reddit weight loss: SemagluPharm – rybelsus recall
https://semaglupharm.shop/# Semaglu Pharm
http://semaglupharm.com/# SemagluPharm
Crestor Pharm Crestor Pharm can you have grapefruit with crestor
SemagluPharm: Rybelsus 3mg 7mg 14mg – Semaglu Pharm
5mg semaglutide dosing chart: SemagluPharm – Semaglu Pharm
http://semaglupharm.com/# SemagluPharm
crestor rosuvastatin calcium Crestor Pharm rosuvastatin and osteoporosis
SemagluPharm: Semaglu Pharm – semaglutide ban
Semaglu Pharm: SemagluPharm – Semaglu Pharm
https://semaglupharm.com/# another name for rybelsus
https://prednipharm.com/# prednisone uk over the counter
No doctor visit required statins Buy cholesterol medicine online cheap CrestorPharm
SemagluPharm: Where to buy Semaglutide legally – SemagluPharm
Predni Pharm: prednisone buy no prescription – prednisone brand name in india
https://semaglupharm.com/# SemagluPharm
where is crestor made CrestorPharm Affordable cholesterol-lowering pills
Meds From Mexico Meds From Mexico Meds From Mexico
https://canadapharmglobal.com/# canadian pharmacy online store
buying prescription drugs in mexico: medicine in mexico pharmacies – mexican border pharmacies shipping to usa
India Pharm Global: world pharmacy india – buy prescription drugs from india
northwest pharmacy canada legal to buy prescription drugs from canada canadian pharmacy meds review
http://canadapharmglobal.com/# precription drugs from canada
https://indiapharmglobal.com/# cheapest online pharmacy india
reputable mexican pharmacies online: mexican pharmaceuticals online – п»їbest mexican online pharmacies
Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me? https://accounts.binance.com/fr/register?ref=GJY4VW8W
canadian online pharmacy reviews: canada pharmacy online – legitimate canadian pharmacy
mail order pharmacy india India Pharm Global Online medicine order
https://indiapharmglobal.com/# Online medicine home delivery
Meds From Mexico: Meds From Mexico – Meds From Mexico
India Pharm Global: indian pharmacy online – India Pharm Global
http://canadapharmglobal.com/# reliable canadian pharmacy
India Pharm Global pharmacy website india best india pharmacy
https://indiapharmglobal.com/# India Pharm Global
reputable indian pharmacies: India Pharm Global – India Pharm Global
Meds From Mexico: purple pharmacy mexico price list – pharmacies in mexico that ship to usa
medicin apotek apotek på nätet billigt hur stavas välkommen
http://papafarma.com/# melatonina 5 mg opiniones
lagerstatus apotek: gurkmeja apotek – Svenska Pharma
Papa Farma: Papa Farma – opiniones verificadas es fiable
http://efarmaciait.com/# EFarmaciaIt
apotek se recept Svenska Pharma Svenska Pharma
https://papafarma.shop/# Papa Farma
EFarmaciaIt: EFarmaciaIt – bar farmacia torino
EFarmaciaIt: EFarmaciaIt – cos’ГЁ expose 100 mg
https://papafarma.shop/# Papa Farma
EFarmaciaIt monodose significato EFarmaciaIt
gliatilin flaconcini prezzo: EFarmaciaIt – fucidin crema cosa serve
http://papafarma.com/# farmacias en sevilla la nueva
Svenska Pharma: Svenska Pharma – Svenska Pharma
Rask Apotek Rask Apotek ringorm behandling apotek
Svenska Pharma: apotek hudkrГ¤m – meadow svenska
http://svenskapharma.com/# Svenska Pharma
cos’ГЁ expose 100 mg tiche 25 fucicort crema prezzo amazon
https://raskapotek.com/# Rask Apotek
https://efarmaciait.shop/# EFarmaciaIt
EFarmaciaIt: emla crema prezzo farmacia – EFarmaciaIt
Svenska Pharma Svenska Pharma sГ¶ndagsГ¶ppna apotek
Papa Farma: Papa Farma – Papa Farma
http://svenskapharma.com/# Svenska Pharma
Rask Apotek: apotek munnsГҐr – Rask Apotek
medrol a che serve vitamina c brucia pelle farmacia on line spedizione gratuita
http://svenskapharma.com/# sverige hopp apotek flashback
hurtigtest apotek korona: apotek ГҐpen sГёndag – Rask Apotek
https://efarmaciait.com/# gentalyn bambini
Svenska Pharma: Svenska Pharma – Svenska Pharma
apotek toppen Svenska Pharma apoteker
https://svenskapharma.shop/# mediciner på nätet
a cosa serve ismigen: coupon amicafarmacia – EFarmaciaIt
Svenska Pharma: visir apotek – Svenska Pharma
https://svenskapharma.com/# Svenska Pharma
finasteride compresse enterogermina ГЁ detraibile foglietto illustrativo zoely
medicina vertiserc: delecit flaconcini – nicetile 500 mg compresse prezzo
https://svenskapharma.shop/# aminosyror lista
Rask Apotek: Rask Apotek – apotek ГҐpningstider
https://raskapotek.com/# bomullsdotter apotek
Papa Farma Papa Farma parafarmacias on line
Pharma Jetzt Pharma Jetzt lavita login
Pharma Jetzt: pet apotheke – PharmaJetzt
https://medicijnpunt.shop/# Medicijn Punt
MedicijnPunt: MedicijnPunt – medicatie apotheek