Eigener Report viel zu langsam

Ich habe einen Report entwickelt, der die Tracking-Daten einer ePaper-App auswerten soll. Mit Custom Variables des Page-Scope werden in der App u.a. der Name eines Zeitungsartikels und die Regionalausgabe getrackt. Nun will ich je Ausgabe sehen, wie viele Visits ein Artikel hat. Weil der Piwik-Report “Custom Variable” nicht die gewünschten Metriken anzeigt, habe ich einen neuen erstellt, der im Grunde die Reports “Custom Variable” und “Page titles” verknüpft. Für die Zeitspanne eines Tages funktioniert das gerade noch mit grottiger Performance, aber gar nicht für mehr als einen Tag.

Die Report-Funktion:

protected function getArticleData($idSite, $period, $date, $segment, $add_segment) { ... // $add_segment verknüpft $segment mit der CV für die Regionalausgabe $newTable = new DataTable(); $articleTable = \Piwik\Plugins\CustomVariables\API::getInstance()->getCustomVariablesValuesFromNameId( ..., $idSubtable = 4, ...); foreach ($articleTable->getRows() as $articleRow) { $articleName = $articleRow->getColumn('label'); $articleName = urlencode($articleName); $locSegment = $segment . ";" . "customVariablePageValue4%3D%3D" . $articleName; $pageTable = \Piwik\Plugins\Actions\API::getInstance()->getPageTitles($idSite, $period, $date, $locSegment); $pageTable->filter('ReplaceColumnNames'); foreach ($pageTable->getRows() as $newRow) { foreach ($newRow as $key => $value) { if (!isset($articleRow[$key])) { $articleRow->addColumns(array($key => $value)); } } } $newTable->addRow($articleRow); } return $newTable; }

Hat jemand Tipps, wie ich den Report performanter oder besser machen kann? Wie könnte ein Archiver aussehen, um die benötigten Daten vorher zu aggregieren?

Danke & viele Grüße.