diff options
author | Thomas Steur <thomas.steur@gmail.com> | 2015-04-14 04:57:52 +0300 |
---|---|---|
committer | Thomas Steur <thomas.steur@gmail.com> | 2015-04-16 07:39:18 +0300 |
commit | 6b6743c0da73087e2d5534889201355bad500c3e (patch) | |
tree | 4b8ce39ccac582a0d5f9bca3f46c92dacbabb1e8 /core/Tracker/Visitor.php | |
parent | 140c3b03e79499835a9af406e591b26869beba28 (diff) |
Improve performance of BulkTracking and QueuedTracking
Diffstat (limited to 'core/Tracker/Visitor.php')
-rw-r--r-- | core/Tracker/Visitor.php | 94 |
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; } |