PageRenderTime 45ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/misc/test_generateLotsVisitsWebsites.php

https://github.com/quarkness/piwik
PHP | 135 lines | 117 code | 16 blank | 2 comment | 2 complexity | 5679fd5c40bb49929fbb52d168a6c530 MD5 | raw file
  1. <?php
  2. define('PIWIK_INCLUDE_PATH', realpath( dirname(__FILE__)."/.." ));
  3. define('PIWIK_ENABLE_DISPATCH', false);
  4. define('PIWIK_ENABLE_ERROR_HANDLER', false);
  5. define('PIWIK_ENABLE_SESSION_START', false);
  6. require_once PIWIK_INCLUDE_PATH . "/index.php";
  7. require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";
  8. require_once PIWIK_INCLUDE_PATH . "/libs/PiwikTracker/PiwikTracker.php";
  9. Piwik_FrontController::getInstance()->init();
  10. if(!Piwik_Common::isPhpCliMode()) { die("ERROR: Must be executed in CLI"); }
  11. $process = new Piwik_StressTests_CopyLogs;
  12. $process->init();
  13. $process->run();
  14. //$process->delete();
  15. class Piwik_StressTests_CopyLogs
  16. {
  17. function init()
  18. {
  19. Zend_Registry::get('config')->disableSavingConfigurationFileUpdates();
  20. Zend_Registry::get('config')->log->log_only_when_debug_parameter = 0;
  21. Zend_Registry::get('config')->log->logger_message = array("logger_message" => "screen");
  22. Piwik::createLogObject();
  23. }
  24. function run()
  25. {
  26. // Copy all visits in date range into TODAY
  27. $startDate = '2011-08-12';
  28. $endDate = '2011-08-12';
  29. $this->log("Starting...");
  30. $db = Zend_Registry::get('db');
  31. $initial = $this->getVisitsToday();
  32. $this->log(" Visits today so far: " . $initial);
  33. $initialActions = $this->getActionsToday();
  34. $this->log(" Actions today: " . $initialActions);
  35. $initialPurchasedItems = $this->getConversionItemsToday();
  36. $this->log(" Purchased items today: " . $initialPurchasedItems);
  37. $initialConversions = $this->getConversionsToday();
  38. $this->log(" Conversions today: " . $initialConversions);
  39. $this->log(" Now copying visits between '$startDate' and '$endDate'...");
  40. $sql = "INSERT INTO ". Piwik_Common::prefixTable('log_visit')." (`idsite`, `idvisitor`, `visitor_localtime`, `visitor_returning`, `visitor_count_visits`, `visit_first_action_time`, `visit_last_action_time`, `visit_exit_idaction_url`, `visit_exit_idaction_name`, `visit_entry_idaction_url`, `visit_entry_idaction_name`, `visit_total_actions`, `visit_total_time`, `visit_goal_converted`, `visit_goal_buyer`, `referer_type`, `referer_name`, `referer_url`, `referer_keyword`, `config_id`, `config_os`, `config_browser_name`, `config_browser_version`, `config_resolution`, `config_pdf`, `config_flash`, `config_java`, `config_director`, `config_quicktime`, `config_realplayer`, `config_windowsmedia`, `config_gears`, `config_silverlight`, `config_cookie`, `location_ip`, `location_browser_lang`, `location_country`, `location_continent`, `location_provider`, `custom_var_k1`, `custom_var_v1`, `custom_var_k2`, `custom_var_v2`, `custom_var_k3`, `custom_var_v3`, `custom_var_k4`, `custom_var_v4`, `custom_var_k5`, `custom_var_v5`, `visitor_days_since_last`, `visitor_days_since_order`, `visitor_days_since_first`)
  41. SELECT `idsite`, `idvisitor`, `visitor_localtime`, `visitor_returning`, `visitor_count_visits`, CONCAT(CURRENT_DATE() , \" \", FLOOR(RAND()*24) , \":\",FLOOR(RAND()*60),\":\",FLOOR(RAND()*60)), CONCAT(CURRENT_DATE() , \" \", FLOOR(RAND()*24) , \":\",FLOOR(RAND()*60),\":\",FLOOR(RAND()*60)), `visit_exit_idaction_url`, `visit_exit_idaction_name`, `visit_entry_idaction_url`, `visit_entry_idaction_name`, `visit_total_actions`, `visit_total_time`, `visit_goal_converted`, `visit_goal_buyer`, `referer_type`, `referer_name`, `referer_url`, `referer_keyword`, `config_id`, `config_os`, `config_browser_name`, `config_browser_version`, `config_resolution`, `config_pdf`, `config_flash`, `config_java`, `config_director`, `config_quicktime`, `config_realplayer`, `config_windowsmedia`, `config_gears`, `config_silverlight`, `config_cookie`, `location_ip`, `location_browser_lang`, `location_country`, `location_continent`, `location_provider`, `custom_var_k1`, `custom_var_v1`, `custom_var_k2`, `custom_var_v2`, `custom_var_k3`, `custom_var_v3`, `custom_var_k4`, `custom_var_v4`, `custom_var_k5`, `custom_var_v5`, `visitor_days_since_last`, `visitor_days_since_order`, `visitor_days_since_first`
  42. FROM `". Piwik_Common::prefixTable('log_visit')."`
  43. WHERE idsite >= 1 AND date(visit_last_action_time) between '$startDate' and '$endDate' ;";
  44. $result = $db->query($sql);
  45. $this->log(" Copying actions...");
  46. $sql = "INSERT INTO ". Piwik_Common::prefixTable('log_link_visit_action')." (`idsite`, `idvisitor`, `server_time`, `idvisit`, `idaction_url`, `idaction_url_ref`, `idaction_name`, `idaction_name_ref`, `time_spent_ref_action`, `custom_var_k1`, `custom_var_v1`, `custom_var_k2`, `custom_var_v2`, `custom_var_k3`, `custom_var_v3`, `custom_var_k4`, `custom_var_v4`, `custom_var_k5`, `custom_var_v5`)
  47. SELECT `idsite`, `idvisitor`, CONCAT(CURRENT_DATE() , \" \", FLOOR(RAND()*24) , \":\",FLOOR(RAND()*60),\":\",FLOOR(RAND()*60)), `idvisit`, `idaction_url`, `idaction_url_ref`, `idaction_name`, `idaction_name_ref`, `time_spent_ref_action`, `custom_var_k1`, `custom_var_v1`, `custom_var_k2`, `custom_var_v2`, `custom_var_k3`, `custom_var_v3`, `custom_var_k4`, `custom_var_v4`, `custom_var_k5`, `custom_var_v5`
  48. FROM `". Piwik_Common::prefixTable('log_link_visit_action')."`
  49. WHERE idsite >= 1 AND date(server_time) between '$startDate' and '$endDate'
  50. ;"; // LIMIT 1000000
  51. $result = $db->query($sql);
  52. $this->log(" Copying conversions...");
  53. $sql = "INSERT IGNORE INTO `". Piwik_Common::prefixTable('log_conversion')."` (`idvisit`, `idsite`, `visitor_days_since_first`, `visitor_days_since_order`, `visitor_count_visits`, `idvisitor`, `server_time`, `idaction_url`, `idlink_va`, `referer_visit_server_date`, `referer_type`, `referer_name`, `referer_keyword`, `visitor_returning`, `location_country`, `location_continent`, `url`, `idgoal`, `revenue`, `buster`, `idorder`, `custom_var_k1`, `custom_var_v1`, `custom_var_k2`, `custom_var_v2`, `custom_var_k3`, `custom_var_v3`, `custom_var_k4`, `custom_var_v4`, `custom_var_k5`, `custom_var_v5`, `items`, `revenue_subtotal`, `revenue_tax`, `revenue_shipping`, `revenue_discount`)
  54. SELECT `idvisit`, `idsite`, `visitor_days_since_first`, `visitor_days_since_order`, `visitor_count_visits`, `idvisitor`, CONCAT(CURRENT_DATE() , \" \", FLOOR(RAND()*24) , \":\",FLOOR(RAND()*60),\":\",FLOOR(RAND()*60)), `idaction_url`, `idlink_va`, `referer_visit_server_date`, `referer_type`, `referer_name`, `referer_keyword`, `visitor_returning`, `location_country`, `location_continent`, `url`, `idgoal`, `revenue`, FLOOR(`buster` * RAND()), CONCAT(`idorder`,SUBSTRING(MD5(RAND()) FROM 1 FOR 9)) , `custom_var_k1`, `custom_var_v1`, `custom_var_k2`, `custom_var_v2`, `custom_var_k3`, `custom_var_v3`, `custom_var_k4`, `custom_var_v4`, `custom_var_k5`, `custom_var_v5`, `items`, `revenue_subtotal`, `revenue_tax`, `revenue_shipping`, `revenue_discount`
  55. FROM `". Piwik_Common::prefixTable('log_conversion')."`
  56. WHERE idsite >= 1 AND date(server_time) between '$startDate' and '$endDate' ;";
  57. $result = $db->query($sql);
  58. $this->log(" Copying purchased items...");
  59. $sql = "INSERT INTO `". Piwik_Common::prefixTable('log_conversion_item')."` (`idsite`, `idvisitor`, `server_time`, `idvisit`, `idorder`, `idaction_sku`, `idaction_name`, `idaction_category`, `price`, `quantity`, `deleted`)
  60. SELECT `idsite`, `idvisitor`, CONCAT(CURRENT_DATE() , \" \", TIME(`server_time`)), `idvisit`, CONCAT(`idorder`,SUBSTRING(MD5(RAND()) FROM 1 FOR 9)) , `idaction_sku`, `idaction_name`, `idaction_category`, `price`, `quantity`, `deleted`
  61. FROM `". Piwik_Common::prefixTable('log_conversion_item')."`
  62. WHERE idsite >= 1 AND date(server_time) between '$startDate' and '$endDate' ;";
  63. $result = $db->query($sql);
  64. $now = $this->getVisitsToday();
  65. $actions = $this->getActionsToday();
  66. $purchasedItems = $this->getConversionItemsToday();
  67. $conversions = $this->getConversionsToday();
  68. $this->log(" -------------------------------------");
  69. $this->log(" Today visits after import: " . $now);
  70. $this->log(" Actions: " . $actions);
  71. $this->log(" Purchased items: " . $purchasedItems);
  72. $this->log(" Conversions: " . $conversions);
  73. $this->log(" - New visits created: " . ($now-$initial));
  74. $this->log(" - Actions created: " . ($actions-$initialActions));
  75. $this->log(" - New conversions created: " . ($conversions-$initialConversions));
  76. $this->log(" - New purchased items created: " . ($purchasedItems-$initialPurchasedItems));
  77. $this->log("done");
  78. }
  79. function delete()
  80. {
  81. $this->log("Deleting logs for today...");
  82. $db = Zend_Registry::get('db');
  83. $sql = "DELETE FROM ". Piwik_Common::prefixTable('log_visit')."
  84. WHERE date(visit_last_action_time) = CURRENT_DATE();";
  85. $db->query($sql);
  86. foreach(array('log_link_visit_action', 'log_conversion', 'log_conversion_item') as $table)
  87. {
  88. $sql = "DELETE FROM ".Piwik_Common::prefixTable($table)."
  89. WHERE date(server_time) = CURRENT_DATE();";
  90. $db->query($sql);
  91. }
  92. $sql = "OPTIMIZE TABLE ". Piwik_Common::prefixTable('log_link_visit_action').", ". Piwik_Common::prefixTable('log_conversion').", ". Piwik_Common::prefixTable('log_conversion_item').", ". Piwik_Common::prefixTable('log_visit')."";
  93. $db->query($sql);
  94. $this->log("done");
  95. }
  96. function log($m)
  97. {
  98. Piwik::log($m);
  99. }
  100. function getVisitsToday()
  101. {
  102. $sql = "SELECT count(*) FROM `". Piwik_Common::prefixTable('log_visit')."` WHERE idsite >= 1 AND DATE(`visit_last_action_time`) = CURRENT_DATE;";
  103. return Zend_Registry::get('db')->fetchOne($sql);
  104. }
  105. function getConversionItemsToday($table = 'log_conversion_item')
  106. {
  107. $sql = "SELECT count(*) FROM `".Piwik_Common::prefixTable($table)."` WHERE idsite >= 1 AND DATE(`server_time`) = CURRENT_DATE;";
  108. return Zend_Registry::get('db')->fetchOne($sql);
  109. }
  110. function getConversionsToday()
  111. {
  112. return $this->getConversionItemsToday($table = "log_conversion");
  113. }
  114. function getActionsToday()
  115. {
  116. $sql = "SELECT count(*) FROM `". Piwik_Common::prefixTable('log_link_visit_action')."` WHERE idsite >= 1 AND DATE(`server_time`) = CURRENT_DATE;";
  117. return Zend_Registry::get('db')->fetchOne($sql);
  118. }
  119. }