Skip to content
Extraits de code Groupes Projets
Valider d0dba57f rédigé par sgiehl's avatar sgiehl
Parcourir les fichiers

Respect new shouldRunWithoutVisits method of plugin archivers in CronArchiver

parent f2be7819
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -73,7 +73,7 @@ class Loader
list($visits, $visitsConverted) = $this->prepareCoreMetricsArchive($visits, $visitsConverted);
list($idArchive, $visits) = $this->prepareAllPluginsArchive($visits, $visitsConverted);
if ($this->isThereSomeVisits($visits)) {
if ($this->isThereSomeVisits($visits) || PluginsArchiver::doesAnyPluginArchiveWithoutVisits()) {
return $idArchive;
}
return false;
......
......@@ -101,7 +101,7 @@ class PluginsArchiver
$this->archiveProcessor->setNumberOfVisits($visits, $visitsConverted);
$archivers = $this->getPluginArchivers();
$archivers = static::getPluginArchivers();
foreach ($archivers as $pluginName => $archiverClass) {
// We clean up below all tables created during this function call (and recursive calls)
......@@ -166,12 +166,28 @@ class PluginsArchiver
return $this->archiveWriter->getIdArchive();
}
/**
* Returns if any plugin archiver archives without visits
*/
public static function doesAnyPluginArchiveWithoutVisits()
{
$archivers = static::getPluginArchivers();
foreach ($archivers as $pluginName => $archiverClass) {
if ($archiverClass::shouldRunWithoutVisits()) {
return true;
}
}
return false;
}
/**
* Loads Archiver class from any plugin that defines one.
*
* @return \Piwik\Plugin\Archiver[]
*/
protected function getPluginArchivers()
protected static function getPluginArchivers()
{
if (empty(static::$archivers)) {
$pluginNames = \Piwik\Plugin\Manager::getInstance()->getActivatedPlugins();
......
......@@ -9,6 +9,7 @@
namespace Piwik;
use Exception;
use Piwik\ArchiveProcessor\PluginsArchiver;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Archiver\Request;
use Piwik\Container\StaticContainer;
......@@ -816,9 +817,11 @@ class CronArchive
$this->requests++;
$this->processed++;
$shouldArchiveWithoutVisits = PluginsArchiver::doesAnyPluginArchiveWithoutVisits();
// If there is no visit today and we don't need to process this website, we can skip remaining archives
if (
0 == $visitsToday
0 == $visitsToday && !$shouldArchiveWithoutVisits
&& !$shouldArchivePeriods
) {
$this->logger->info("Skipped website id $idSite, no visit today, " . $timerWebsite->__toString());
......@@ -827,7 +830,7 @@ class CronArchive
return false;
}
if (0 == $visitsLastDays
if (0 == $visitsLastDays && !$shouldArchiveWithoutVisits
&& !$shouldArchivePeriods
&& $this->shouldArchiveAllSites
) {
......
......@@ -147,7 +147,7 @@ abstract class Archiver
*
* @return bool
*/
public function shouldRunWithoutVisits()
public static function shouldRunWithoutVisits()
{
return false;
}
......
......@@ -37,7 +37,7 @@ class CustomArchiver extends Archiver
class CustomPluginsArchiver extends PluginsArchiver
{
protected function getPluginArchivers()
protected static function getPluginArchivers()
{
return array(
'MyPluginName' => 'Piwik\Tests\Integration\Archive\CustomArchiver'
......
......@@ -32,7 +32,7 @@ class ArchiveWithNoVisitsTest_MockArchiver extends Archiver
self::$methodsCalled[] = 'aggregateMultipleReports';
}
public function shouldRunWithoutVisits()
public static function shouldRunWithoutVisits()
{
return self::$runWithoutVisits;
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter