protected function execute(InputInterface $input, OutputInterface $output) { $systemCheck = new SystemCheck(); $systemCheck->checkRedisIsInstalled(); $trackerEnvironment = new Environment('tracker'); $trackerEnvironment->init(); Log::unsetInstance(); $trackerEnvironment->getContainer()->get('Piwik\\Access')->setSuperUserAccess(false); $trackerEnvironment->getContainer()->get('Piwik\\Plugin\\Manager')->setTrackerPluginsNotToLoad(array('Provider')); Tracker::loadTrackerEnvironment(); if (OutputInterface::VERBOSITY_VERY_VERBOSE <= $output->getVerbosity()) { $GLOBALS['PIWIK_TRACKER_DEBUG'] = true; } $backend = Queue\Factory::makeBackend(); $queueManager = Queue\Factory::makeQueueManager($backend); if (!$queueManager->canAcquireMoreLocks()) { $trackerEnvironment->destroy(); $this->writeSuccessMessage($output, array("Nothing to proccess. Already max number of workers in process.")); return; } $shouldProcess = false; foreach ($queueManager->getAllQueues() as $queue) { if ($queue->shouldProcess()) { $shouldProcess = true; break; } } if (!$shouldProcess) { $trackerEnvironment->destroy(); $this->writeSuccessMessage($output, array("No queue currently needs processing")); return; } $output->writeln("<info>Starting to process request sets, this can take a while</info>"); register_shutdown_function(function () use($queueManager) { $queueManager->unlock(); }); $startTime = microtime(true); $processor = new Processor($queueManager); $processor->setNumberOfMaxBatchesToProcess(1000); $tracker = $processor->process(); $neededTime = microtime(true) - $startTime; $numRequestsTracked = $tracker->getCountOfLoggedRequests(); $requestsPerSecond = $this->getNumberOfRequestsPerSecond($numRequestsTracked, $neededTime); Piwik::postEvent('Tracker.end'); $trackerEnvironment->destroy(); $this->writeSuccessMessage($output, array(sprintf('This worker finished queue processing with %sreq/s (%s requests in %02.2f seconds)', $requestsPerSecond, $numRequestsTracked, $neededTime))); }
private function recreateLogSingleton($backend, $level = 'INFO') { $newEnv = new Environment('test', array('ini.log.log_writers' => array($backend), 'ini.log.log_level' => $level, 'ini.log.string_message_format' => self::STRING_MESSAGE_FORMAT, 'ini.log.logger_file_path' => self::getLogFileLocation(), 'Psr\\Log\\LoggerInterface' => \DI\get('Monolog\\Logger'))); $newEnv->init(); $newMonologLogger = $newEnv->getContainer()->make('Psr\\Log\\LoggerInterface'); $oldLogger = new Log($newMonologLogger); Log::setSingletonInstance($oldLogger); }
public function loginAsSuperUser() { /** @var Auth $auth */ $auth = $this->piwikEnvironment->getContainer()->get('Piwik\\Auth'); $auth->setLogin(Fixture::ADMIN_USER_LOGIN); $auth->setPassword(Fixture::ADMIN_USER_PASSWORD); Access::getInstance()->setSuperUserAccess(false); Access::getInstance()->reloadAccess(StaticContainer::get('Piwik\\Auth')); }
define('PIWIK_ENABLE_SESSION_START', false); require_once PIWIK_INCLUDE_PATH . "/index.php"; if (!Common::isPhpCliMode()) { return; } $testmode = in_array('--testmode', $_SERVER['argv']); if ($testmode) { define('PIWIK_TEST_MODE', true); Environment::setGlobalEnvironmentManipulator(new TestingEnvironmentManipulator(new TestingEnvironmentVariables())); } function getPiwikDomain() { foreach ($_SERVER['argv'] as $param) { $pattern = '--piwik-domain='; if (false !== strpos($param, $pattern)) { return substr($param, strlen($pattern)); } } return null; } $environment = new Environment('cli'); $environment->init(); $piwikDomain = getPiwikDomain(); if ($piwikDomain) { Url::setHost($piwikDomain); } $token = Db::get()->fetchOne("SELECT token_auth\n FROM " . Common::prefixTable("user") . "\n WHERE superuser_access = 1\n ORDER BY date_registered ASC"); $filename = $environment->getContainer()->get('path.tmp') . '/cache/token.php'; $content = "<?php exit; //\t" . $token; file_put_contents($filename, $content); echo $filename;
public static function getSegmentsMetadata() { // Refresh cache for CustomVariables\Model Cache::clearCacheGeneral(); $segments = array(); $environment = new Environment(null); $exception = null; try { $environment->init(); $environment->getContainer()->get('Piwik\\Plugin\\Manager')->loadActivatedPlugins(); foreach (Dimension::getAllDimensions() as $dimension) { if ($dimension instanceof CustomVariableName || $dimension instanceof CustomVariableValue) { continue; // added manually below } foreach ($dimension->getSegments() as $segment) { $segments[] = $segment->getSegment(); } } // add CustomVariables manually since the data provider may not have access to the DB for ($i = 1; $i != Model::DEFAULT_CUSTOM_VAR_COUNT + 1; ++$i) { $segments = array_merge($segments, self::getCustomVariableSegments($i)); } $segments = array_merge($segments, self::getCustomVariableSegments()); } catch (\Exception $ex) { $exception = $ex; echo $ex->getMessage() . "\n" . $ex->getTraceAsString() . "\n"; } $environment->destroy(); if (!empty($exception)) { throw $exception; } return $segments; }