Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Steur <thomas.steur@gmail.com>2015-04-14 04:57:52 +0300
committerThomas Steur <thomas.steur@gmail.com>2015-04-16 07:39:18 +0300
commit6b6743c0da73087e2d5534889201355bad500c3e (patch)
tree4b8ce39ccac582a0d5f9bca3f46c92dacbabb1e8 /core/Tracker/Visitor.php
parent140c3b03e79499835a9af406e591b26869beba28 (diff)
Improve performance of BulkTracking and QueuedTracking
Diffstat (limited to 'core/Tracker/Visitor.php')
-rw-r--r--core/Tracker/Visitor.php94
1 files changed, 49 insertions, 45 deletions
diff --git a/core/Tracker/Visitor.php b/core/Tracker/Visitor.php
index d9aadb640e..4088e724f1 100644
--- a/core/Tracker/Visitor.php
+++ b/core/Tracker/Visitor.php
@@ -173,54 +173,58 @@ class Visitor
*/
private function getVisitFieldsPersist()
{
- $fields = array(
- 'idvisitor',
- 'idvisit',
- 'user_id',
-
- 'visit_exit_idaction_url',
- 'visit_exit_idaction_name',
- 'visitor_returning',
- 'visitor_days_since_first',
- 'visitor_days_since_order',
- 'visitor_count_visits',
- 'visit_goal_buyer',
-
- 'location_country',
- 'location_region',
- 'location_city',
- 'location_latitude',
- 'location_longitude',
-
- 'referer_name',
- 'referer_keyword',
- 'referer_type',
- );
-
- $dimensions = VisitDimension::getAllDimensions();
-
- foreach ($dimensions as $dimension) {
- if ($dimension->hasImplementedEvent('onExistingVisit')) {
- $fields[] = $dimension->getColumnName();
- }
+ static $fields;
+
+ if (is_null($fields)) {
+ $fields = array(
+ 'idvisitor',
+ 'idvisit',
+ 'user_id',
+
+ 'visit_exit_idaction_url',
+ 'visit_exit_idaction_name',
+ 'visitor_returning',
+ 'visitor_days_since_first',
+ 'visitor_days_since_order',
+ 'visitor_count_visits',
+ 'visit_goal_buyer',
+
+ 'location_country',
+ 'location_region',
+ 'location_city',
+ 'location_latitude',
+ 'location_longitude',
+
+ 'referer_name',
+ 'referer_keyword',
+ 'referer_type',
+ );
+
+ $dimensions = VisitDimension::getAllDimensions();
+
+ foreach ($dimensions as $dimension) {
+ if ($dimension->hasImplementedEvent('onExistingVisit')) {
+ $fields[] = $dimension->getColumnName();
+ }
- foreach ($dimension->getRequiredVisitFields() as $field) {
- $fields[] = $field;
+ foreach ($dimension->getRequiredVisitFields() as $field) {
+ $fields[] = $field;
+ }
}
- }
- /**
- * This event collects a list of [visit entity](/guides/persistence-and-the-mysql-backend#visits) properties that should be loaded when reading
- * the existing visit. Properties that appear in this list will be available in other tracking
- * events such as 'onExistingVisit'.
- *
- * Plugins can use this event to load additional visit entity properties for later use during tracking.
- */
- Piwik::postEvent('Tracker.getVisitFieldsToPersist', array(&$fields));
-
- array_unshift($fields, 'visit_first_action_time');
- array_unshift($fields, 'visit_last_action_time');
- $fields = array_unique($fields);
+ /**
+ * This event collects a list of [visit entity](/guides/persistence-and-the-mysql-backend#visits) properties that should be loaded when reading
+ * the existing visit. Properties that appear in this list will be available in other tracking
+ * events such as 'onExistingVisit'.
+ *
+ * Plugins can use this event to load additional visit entity properties for later use during tracking.
+ */
+ Piwik::postEvent('Tracker.getVisitFieldsToPersist', array(&$fields));
+
+ array_unshift($fields, 'visit_first_action_time');
+ array_unshift($fields, 'visit_last_action_time');
+ $fields = array_unique($fields);
+ }
return $fields;
}