1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
<?php
/**
* Piwik - Open source web analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
* @version $Id$
*
* @category Piwik_Plugin
* @package Piwik_VisitorGenerator
*/
/**
*
* @package Piwik_VisitorGenerator
*/
class Piwik_VisitorGenerator_Controller extends Piwik_Controller {
public function index() {
Piwik::checkUserIsSuperUser();
$sitesList = Piwik_SitesManager_API::getInstance()->getSitesWithAdminAccess();
$view = Piwik_View::factory('index');
$this->setGeneralVariablesView($view);
$view->assign('sitesList', $sitesList);
$view->menu = Piwik_GetAdminMenu();
echo $view->render();
}
public function generate() {
// Only admin is allowed to do this!
Piwik::checkUserIsSuperUser();
$this->checkTokenInUrl();
$GET = $_GET;
$POST = $_POST;
$COOKIE = $_COOKIE;
$REQUEST = $_REQUEST;
if(Piwik_Common::getRequestVar('choice', 'no') != 'yes') {
Piwik::redirectToModule('VisitorGenerator', 'index');
}
$minVisitors = Piwik_Common::getRequestVar('minVisitors', 20, 'int');
$maxVisitors = Piwik_Common::getRequestVar('maxVisitors', 100, 'int');
$nbActions = Piwik_Common::getRequestVar('nbActions', 10, 'int');
$daysToCompute = Piwik_Common::getRequestVar('daysToCompute', 1, 'int');
$idSite = Piwik_Common::getRequestVar('idSite');
Piwik::setMaxExecutionTime(0);
$loadedPlugins = Piwik_PluginsManager::getInstance()->getLoadedPlugins();
$loadedPlugins = array_keys($loadedPlugins);
// we have to unload the Provider plugin otherwise it tries to lookup the IP for a hostname, and there is no dns server here
if(Piwik_PluginsManager::getInstance()->isPluginActivated('Provider')) {
Piwik_PluginsManager::getInstance()->unloadPlugin('Provider');
}
// we set the DO NOT load plugins so that the Tracker generator doesn't load the plugins we've just disabled.
// if for some reasons you want to load the plugins, comment this line, and disable the plugin Provider in the plugins interface
Piwik_PluginsManager::getInstance()->doNotLoadPlugins();
$generator = new Piwik_VisitorGenerator_Generator();
$generator->setMaximumUrlDepth(3);
//$generator->disableProfiler();
$generator->setIdSite( $idSite );
$nbActionsTotal = 0;
//$generator->emptyAllLogTables();
$generator->init();
$timer = new Piwik_Timer;
$startTime = time() - ($daysToCompute-1)*86400;
$dates = array();
while($startTime <= time()) {
$visitors = rand($minVisitors, $maxVisitors);
$actions = $nbActions;
$generator->setTimestampToUse($startTime);
$nbActionsTotalThisDay = $generator->generate($visitors, $actions);
$actionsPerVisit = round($nbActionsTotalThisDay / $visitors);
$date = array();
$date['visitors'] = $visitors;
$date['actionsPerVisit'] = $actionsPerVisit;
$date['startTime'] = $startTime;
$dates[] = $date;
$startTime += 86400;
$nbActionsTotal += $nbActionsTotalThisDay;
//sleep(1);
}
$generator->end();
// Recover all super globals
$_GET = $GET;
$_POST = $POST;
$_COOKIE = $COOKIE;
$_REQUEST = $REQUEST;
// Reload plugins
Piwik_PluginsManager::getInstance()->loadPlugins($loadedPlugins);
// Init view
$view = Piwik_View::factory('generate');
$view->menu = Piwik_GetAdminMenu();
$this->setGeneralVariablesView($view);
$view->assign('dates', $dates);
$view->assign('timer', $timer);
$view->assign('nbActionsTotal', $nbActionsTotal);
$view->assign('nbRequestsPerSec', round($nbActionsTotal / $timer->getTime(),0));
echo $view->render();
}
}
|